CASE语句中的LISTAGG

时间:2019-02-28 13:55:33

标签: sql oracle listagg

是否可以在case语句的“然后”阶段中使用listagg?

即使我已按其他选定字段进行分组,我也一直遇到与分组和括号相关的错误。

我的案例陈述当前如下:

MAX(CASE WHEN allergen.type = 'KTC' THEN listagg(allergen.name, ',') within group (order by allergen.name) END) AS Allergen_KTC

当按以下方式使用时效果很好:

MAX(CASE WHEN allergen.type = 'KTC' THEN allergen.name END) AS Allergen_KTC

我想我在这里错过了一些东西。

1 个答案:

答案 0 :(得分:1)

反之亦然吗?

listagg(case when allergen.type = 'KTC' then allergen.name end, ',') 
  within group (order by allergen.name)

示例:

SQL> select listagg(case when deptno = 10 then ename end, ',')
  2    within group (order by ename) result
  3  from emp;

RESULT
--------------------------------------------------------------
CLARK,KING,MILLER

SQL>