我在数据(位置)中有一列带有字符串值,我想按vso /类型组合将其折叠成一个单元格/行。这是我目前拥有的:
SELECT vso, type, mp, loc, qty
FROM main
vso type mp loc qty
D13 S UK CW1 29252
D13 S DE FR6 5799
D13 N UK CW1 38
D13 N DE FR1 9
我想要的输出:
vso type loc total_qty
D13 S CW1, FR6 35324
D13 N CW1, FR1 47
我想基本的设置应该是这样的:
SELECT vso, type, SUM(qty) as total_qty, [some sort of concat function of loc]
FROM [table above]
GROUP BY vso, type
但是我不确定该如何处理loc列。理想情况下,如果每个vso和每个类型的loc值相同,则我只希望显示其中之一,而不显示重复项。
顺便说一句,我正在AWS Redshift中做到这一点。
答案 0 :(得分:2)
使用listagg
SELECT vso, type, SUM(qty) as total_qty, listagg(loc ,', ')
within group (order by type)
FROM [table above]
GROUP BY vso, type