-1

我有一个表,其中包含一个名为queues. 所有这些队列integer现在都有一些数据(),在某些情况下,我希望两个队列合二为一,因此我尝试创建以下语句:

    (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
4

2 回答 2

1

ELSIF 用于分支 IF 语句而不是 CASE 语句。只需使用 WHEN:

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

此外,您在第二个子句中缺少引号,这肯定不会帮助您的代码编译。

关于您的更新,如文档所示, CASE 有两种不同的语法。使用简单的 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

您的错误是由于尝试同时使用两种语法引起的。

于 2013-07-04T14:09:09.670 回答
0

尝试

(CASE queue
WHEN queue in ('Erhverv', 'ErhvervOverflow') then 'Erhverv'
WHEN queue in ('Hotline', 'TekniskHotline') then 'Hotline+TekniskHotline'
ELSE QUEUE 
end) as QUEUE
于 2013-07-04T14:02:40.267 回答