oracle的wm_concat()函数的问题

selectbh,wm_concat(distinctname)aa,wm_concat(distinctid)bbfrom....leftjoin....类似于这样的语... 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
wm_concat(name) aa,wm_concat(id)这样的也会出现不匹配,主要是这种 ,id和name不为空
展开
 我来答
micro0369
推荐于2016-07-07 · TA获得超过1.2万个赞
知道大有可为答主
回答量:9250
采纳率:85%
帮助的人:3958万
展开全部
insert into test values('aaa','1');
insert into test values('bbb','2');
insert into test values('ccc','5');
insert into test values('ddd','3');
select wm_concat(a),wm_concat(b) from test;

    WM_CONCAT(A) WM_CONCAT(B)
1 aaa,bbb,ccc,ddd 1,2,5,3

没有问题的。

 

问题出在你的那个  distinct

追问
我没有用distinct ,顺序一样会乱。。
追答
drop table test;
create table test(a varchar2(30),b varchar2(30),c varchar2(30));
insert into test values('aaa','1','a');
insert into test values('bbb','2','a');
insert into test values('ccc','5','a');
insert into test values('ddd','3','a');
insert into test values('aaaaa','11','b');
insert into test values('bbbbb','22','b');
insert into test values('ccccc','55','b');
insert into test values('ddddd','33','b');
select c,max(a),max(b) from (
select c,wm_concat(a) over (partition by c order by a) a,
         wm_concat(b)  over (partition by c order by a) b from test
) tt
group by c ;
 C MAX(A) MAX(B)

a aaa,bbb,ccc,ddd 1,2,5,3

b aaaaa,bbbbb,ccccc,ddddd 11,22,55,33
威孚半导体技术
2024-08-19 广告
威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层... 点击进入详情页
本回答由威孚半导体技术提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式