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,5name和id并没有按照顺序对应,应该怎么写sql呢
结果应该是
aa bb
aaa,bbb,ccc,ddd 1,2,5,3
类似于这样的语句查出来后name和id并不是对应的。
name id
aaa 1
bbb 2
ccc 5
ddd 3出来后
aa bb
aaa,bbb,ccc,ddd 1,2,3,5name和id并没有按照顺序对应,应该怎么写sql呢
结果应该是
aa bb
aaa,bbb,ccc,ddd 1,2,5,3
解决方案 »
- EBS开发
- oracle10数据库在windowsXP下安装,如何配置数据库
- oracle中的完全恢复和不完全恢复有什么区别?如何确定可以采用哪种恢复方式?
- 是不是表里的列越多 查询的速度就越慢
- 想返回汉字姓名的拼音,用什么函数?
- 如果我需要在查询语句SELECT INTO中返回第一条记录,会提示错误吗 ?
- oracle的SQL语句中如何把一个“17.12541254”这样得数转化为“17”屏蔽掉小数
- 庆祝五一,同时预祝大家都平安,散分!
- SQL语句MS SQL正常,Oracle不正常,why?
- oracle中的oem中的监听程序和实例的代理连接都不能使用
- 问下,rman备份需要什么权限以及条件啊?我fat用户有connect、resoures角色能不能做rman备份呢?
- orcale数据库表的导出,只能一个表一个表的导出吗?
可以用rownum建个排序的虚拟列,
wm_concat按照该列的顺序组合,就可以实现了。
select m, max(r)
from (select m, wm_concat(n) over (partition by m order by n) r from t)
group by m ;
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
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;
listagg(NAME, ',') within group(order by rownum)
from tt;