2013-07-04 4 views
-1

У меня есть таблица, которая содержит список имен, называемых queues. Все эти очереди имеют некоторые данные (integer) в настоящее время в некоторых случаях я хочу два из очереди, чтобы быть как один, и я поэтому пытался создать следующее заявление:Oracle SQL if else String

(case when QUEUE in ('Erhverv', 'ErhvervOverflow') then 'Erhverv' 
      ELSIF WHEN QUEUE in ('Hotline', 'TekniskHotline') then Hotline+TekniskHotline' 
      else QUEUE end 
    ) as QUEUE, 

Однако это не похоже на работу.

Может ли кто-нибудь сказать мне, что я делаю неправильно?

ПОЛНЫЙ SQL ЗАЯВЛЕНИЕ

SELECT TRUNC(TIDSPUNKT) AS PERIOD, 
     (CASE queue WHEN queue in ('Erhverv', 'ErhvervOverflow') 
then 'Erhverv' WHEN queue in ('Hotline', 'TekniskHotline') 
then 'Hotline+TekniskHotline' ELSE QUEUE end) as QUEUE, 
     SUM(ANTAL_KALD) AS CALLS, 
     SUM(INTERN_KALD) AS INTERNAL_CALLS 
FROM  KS_DRIFT.PERO_NKM_KØ_OVERSIGT 
WHERE TIDSPUNKT >= '2013-06-18' 
AND  TIDSPUNKT <= '2013-07-03' 
GROUP BY TRUNC(TIDSPUNKT), QUEUE 
+0

«Кажется, что это не работает» не очень полезно. Сообщите нам, что на самом деле происходит, включая любые сообщения об ошибках, которые вы получаете. Ясно, что в этом случае у вас есть некоторые синтаксические ошибки, но нам не нужно гадать. Помните, только * вы видите свой экран: мы знаем только то, что вы нам рассказываете. – APC

ответ

1

ELSIF для ветвления IF заявления не МИОНа заявления. Просто используйте КОГДА:

(case 
    when QUEUE in ('Erhverv', 'ErhvervOverflow') then 'Erhverv' 
    when QUEUE in ('Hotline', 'TekniskHotline') then 'Hotline+TekniskHotline' 
    -------------------------------------------------^ missing quote 
    else QUEUE end 
) as QUEUE, 

Кроме того, у вас есть недостающая цитата во втором пункте, который, конечно, не поможет вашему код для компиляции.

Что касается вашего обновления, as the documentation shows, CASE имеет два разных синтаксиса. Используйте либо простой случай синтаксис ...

case queue 
    when 'ErhvervOverflow' then 'Erhverv' 
    when 'Hotline' then 'Hotline+TekniskHotline' 
    when 'TekniskHotline' then 'Hotline+TekniskHotline' 
    else queue 
end case 

... или найденный синтаксис ...

case 
    when queue in ('ErhvervOverflow', 'Erhverv') then 'Erhverv' 
    when queue in ('Hotline' , 'TekniskHotline') then 'Hotline+TekniskHotline' 
    else queue 
end case 

Вашей ошибка причина в попытке использовать оба одновременно синтаксис.

+0

Это сработало! :) Спасибо –

0

Попробуйте

(CASE queue 
WHEN queue in ('Erhverv', 'ErhvervOverflow') then 'Erhverv' 
WHEN queue in ('Hotline', 'TekniskHotline') then 'Hotline+TekniskHotline' 
ELSE QUEUE 
end) as QUEUE 
+0

Я получаю сообщение об ошибке отсутствующее –

+0

@MarcRasmussen: обновить мой ответ – sarwar026

+0

Теперь я получаю отсутствующее ключевое слово ive обновил мое сообщение, давая полный отчет, который у меня есть –