【发布时间】:2021-10-14 11:08:25
【问题描述】:
我有一个包含如下数据的表结构:
EventNbr | NoteNbr | NoteText
1 1 Example title
1 2 text1
1 3 text2
2 4 Example title 2
3 5 Example title 3
3 6 text3
因此我需要的是一个看起来像这样的数据集
EventNbr | Title | Notes
1 Example Title text1,text2
2 Example Title2
3 Example Title3 text3
我基本上从每个EventNbr 中取出最小的NoteNbr 并将其放在Title 列中,然后在MIN 之后的每个其他NoteNbr 将与@987654328 中的逗号连接在一起@专栏。
我目前拥有的作品,但仅适用于具有多个 NoteNbr 行的 EventNbrs。它不适用于只有 one NoteNbr 行的项目,例如上面的 EventNbr 2。
SELECT A.EventNbr,
MIN(A.NoteText) AS Title,
LISTAGG(A.NoteText, ',') WITHIN GROUP(ORDER BY A.NoteNbr) AS Notes
FROM EventNote A
INNER JOIN (SELECT Min(NoteNbr) Min_NoteNbr, EventNbr
FROM EventNote
GROUP BY EventNbr) B
ON (A.NoteNbr <> B.Min_NoteNbr AND A.EventNbr = B.EventNbr)
INNER JOIN EventNote C
ON (C.NoteNbr = B.Min_NoteNbr AND C.EventNbr = B.EventNbr)
GROUP BY A.EventNbr;
结果:
EventNbr | Title | Notes
1 Example Title text1,text2
3 Example Title3 text3
我需要添加什么来考虑只有一个NoteNbr 行的情况?
【问题讨论】:
-
有些可疑。你说你有一个表,但在你的查询中你有两个表的连接。是哪个?
-
@mathguy 抱歉打错了 - 已修复