oracle与listagg不同

时间:2018-09-21 13:05:47

标签: sql oracle distinct listagg

我有一张桌子。我可以在同一行中使用“,”显示表中列的所有数据。但我不能明确地应用它。请帮助

1 个答案:

答案 0 :(得分:3)

这很棘手。一个简单的建议是使用select distinct

select listagg(col, ',') within group (order by col)
from (select distinct col from t) x;

但是,这使得难以计算其他聚合(或生成更多的listagg()结果)。另一种方法是将窗口函数与listagg()结合使用:

select listagg(case when seqnum = 1 then col end, ',') within group (order by col)
from (select t.*,
             row_number() over (partition by col order by col) as seqnum
      from t
     ) t