我需要在一行中显示与特殊字符串连接的数据。例如
CREATE TABLE vis_tab ( TTid varchar(40), site varchar(40), affected varchar(40));
insert into vis_tab(ttid, site, affected) values ('1', 's1', 'a1');
insert into vis_tab(ttid, site, affected) values ('1', 's1', 'a2');
insert into vis_tab(ttid, site, affected) values ('1', 's2', 'a22');
insert into vis_tab(ttid, site, affected) values ('1', 's2', 'a21');
insert into vis_tab(ttid, site, affected) values ('1', 's1', 'a24');
期望的输出:
RESULT
-------------------------------------------
s1-a1,a2,a24#-#s2-a22,a21
在高级别它应该显示SITE后跟" - "然后所有受影响的服务。然后用# - #(或任何其他)附加结果的下一行,依此类推。
希望我能够以清晰的方式提出我的问题。
答案 0 :(得分:1)
令人困惑的格式。您想要使用listagg()
两次:
select listagg(site || '-' || affectes, '#') within group (order by site)
from (select t.site,
listagg(affected, ',') within group (order by affected) as affectes
from vis_tab t
group by t.site
) t;