wm_concat问题

zzxiaoma 2013-07-13 11:24:13
select bh,wm_concat(distinct name) aa,wm_concat(distinct id) bb from .... left join ....
类似于这样的语句查出来后name和id并不是对应的。
name id
aaa 1
bbb 2
ccc 5
ddd 3

出来后
aa bb
aaa,bbb,ccc,ddd 1,2,3,5

name和id并没有按照顺序对应,应该怎么写sql呢
结果应该是
aa bb
aaa,bbb,ccc,ddd 1,2,5,3
...全文
355 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
u010412956 2013-08-02
  • 打赏
  • 举报
回复
select listagg(ID, ',') within group(order by rownum),
       listagg(NAME, ',') within group(order by rownum)
  from tt;
糖果茜茜 2013-08-02
  • 打赏
  • 举报
回复
create table t1( ID INT, NAME varchar2(10) ); insert into t1 values(1,'aaa'); insert into t1 values(2,'bbb'); insert into t1 values(5,'ccc'); insert into t1 values(3,'ddd'); commit; (一) select NAME, max(r) from (select NAME, wm_concat(ID) over (partition by NAME order by ID) r from t1) group by NAME ; (二) SELECT WMSYS.WM_CONCAT(NAME) NAME,WMSYS.WM_CONCAT(ID) ID from t1 group by NAME,ID;
babaerzi17 2013-07-25
  • 打赏
  • 举报
回复
sys_connect_by_path结合分析函数可以实现
forgetsam 2013-07-15
  • 打赏
  • 举报
回复
select distinct wm_concat(name) over(partition by .. order by .. rows between unbounded preceding and unbounded following) aa, wm_concat(name) over(partition by .. order by .. rows between unbounded preceding and unbounded following) bb from table
zzxiaoma 2013-07-13
  • 打赏
  • 举报
回复
有别的办法吗?
shy315 2013-07-13
  • 打赏
  • 举报
回复
要是不用distinct, 可以用rownum建个排序的虚拟列, wm_concat按照该列的顺序组合,就可以实现了。
shy315 2013-07-13
  • 打赏
  • 举报
回复
如果name和id的distinct数量不同,也没法对应啊
虫洞 2013-07-13
  • 打赏
  • 举报
回复
给你个例子 select m, max(r) from (select m, wm_concat(n) over (partition by m order by n) r from t) group by m ;

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧