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
解决方案 »
- 数据类型number(20,4)强制转换varchar
- 郁闷的问题: 连接 Oracle9i 错误: The Network Adapter could not establish the connection
- 怎么在sql 语句中调用存储过程,把存储过程返回值当成一个字段来使用?
- o9i在redhat8.0下安装,创建数据库时提示can't attach shared memory segment
- ORACLE 的循环语句
- 新手求助
- SQL *plus连接报这个错误,有什么方法可以解决呀????(在线等啊)
- 这个查询怎么写?
- 关于NVL的问题
- exp imp for win200 oracle如何用?(急)
- 问下,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;