【发布时间】:2020-04-21 04:42:46
【问题描述】:
我正在尝试使用 listagg,但我得到了错误的输出。通常,我会单独使用每个 case 语句,但是我将如何使用 listagg 呢?
表 A:
JAN FEB MAR APR Tag
C 102
D T 100
D 101
C D B T 103
表 B:
Name Tag
Ally 100
Ben 101
Missy 102
Noah 103
期望的输出:
Ally Dog,Turtle
Ben Dog
Missy Chicken
Noah Chicken,Dog,Bird,Turtle
我尝试的(错误)代码:
select listagg(
nvl(
case when a.jan = 'C' then 'Chicken'
when a.feb = 'D' then 'Dog'
when a.mar = 'B' then 'Bird'
when a.apr = 'T' then 'Turtle'
end,','),'none')
within group (order by a.tag)
from a where a.tag = b.tag
【问题讨论】:
-
您如何从您发布的输入中获取
'Dog'和'Turtle'之类的字符串?我在输入中看到了一些单字母字符串,例如'C'和'D',但你怎么知道这些是鸡和狗,而不是猫和驴? -
这些只是我们收养的所有动物:D