LISTAGG в заявлении CASE - PullRequest
       40

LISTAGG в заявлении CASE

0 голосов
/ 28 февраля 2019

Можно ли использовать listagg на этапе "Тогда" оператора case?

Я получаю ошибки, связанные с группировкой и круглыми скобками, даже если я сгруппировал по всем другим выбранным полям.

Моя инструкция case в настоящее время выглядит следующим образом:

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 голосов
/ 28 февраля 2019

Может ли наоборот принести пользу?

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>
...