luc*_*Way 2 sql amazon-redshift listagg
我在努力寻找一个好办法,做一个DISTINCT在listagg中红移.
我想要做的就是列出产品组合,但每行应该返回一个不同产品的列表.
例
期望的输出:
bulb, light
bulb, light, fan
Run Code Online (Sandbox Code Playgroud)
代替:
bulb, bulb, light
bulb, bulb, light, fan
Run Code Online (Sandbox Code Playgroud)
下面是我的SQL:
select
tit.listagg
from (
SELECT
username,
listagg(node_name, ',')
WITHIN GROUP (ORDER BY node_name asc)
FROM table
Where node_type not like '%bla bla%'
GROUP BY username
) as tit
group by listagg;
Run Code Online (Sandbox Code Playgroud)
您可以枚举行,然后选择第一行:
select username,
listagg(case when seqnum = 1 then node_name end, ',') within group (order by node_name asc)
from (select t.*,
row_number() over (partition by username, node_name order by node_name) as seqnum
from table t
where node_type not like '%bla bla%'
) t
group by username;
Run Code Online (Sandbox Code Playgroud)
这使用listagg()忽略NULL值的功能.
| 归档时间: |
|
| 查看次数: |
1457 次 |
| 最近记录: |