我建个表 t,字段为key,name
数据有:1,a;
1,b;
2,a;
2,b;
2,c;
我用:select t.key,wmsys.wm_concat(t.name) from t order by t.key
结果会成为:1 a,b;
2 c,a,b;
我想问下有没有方法使其第二行变为: 2 a,b,c ,也就是能排下序
数据有:1,a;
1,b;
2,a;
2,b;
2,c;
我用:select t.key,wmsys.wm_concat(t.name) from t order by t.key
结果会成为:1 a,b;
2 c,a,b;
我想问下有没有方法使其第二行变为: 2 a,b,c ,也就是能排下序
解决方案 »
- 数据导入错误:IMP-00017: following statement failed with ORACLE error 2299 请高手指点迷津
- 用远程桌面链接服务器,在cmd下,执行数据导出报错。
- 請叫一下觸發器的問題
- 如何取出PWDSID.ORA文件中的用户名和密码?急急!!!!
- oracle里怎么把导出数据脚本
- 10G菜鸟找不到像9I的控制台,不知道在那儿可以看到.
- 怎样导出和导入一个用户及其创建的所有表(包括数据)和存储过程?然后怎么导入?
- 如何将数据库中的编号作修改
- 高手请进:Linux下安装Oracle只能用GUI界面?
- 请大家都来谈谈MySQL、Oracle、SQLServer、DB2的性能,做一下比价
- 用存储过程来实现 数据迁移 的问题
- oracle添加另外的表中的数据
select t.key,wmsys.wm_concat(t.name)
from (select * from t order by key) t
group by t.key
select key,wmsys.wm_concat(name) from (
select t.key,t.name from t order by t.key,t.name
) group by key
--wm_concat函数其实也是一个开窗函数,因此直接套用分析函数就可以了
select t.key,wmsys.wm_concat(t.name)over(partition by t.key order by t.name) from t order by t.key
FROM (SELECT t.key,
wmsys.wm_concat(t.NAME) over(PARTITION BY t.key ORDER BY t.NAME) NAME
FROM t)
GROUP BY key;
paddy的外面再套一层
minitoy正解~~~with tab as
(select 1 key, 'a' name from dual union all
select 1,'b' from dual union all
select 2,'a' from dual union all
select 2,'b' from dual union all select 2,'c' from dual)SELECT key, MAX(NAME) NAME
FROM (SELECT t.key,
wmsys.wm_concat(t.NAME) over(PARTITION BY t.key ORDER BY t.NAME) NAME
FROM tab t)
GROUP BY key;
------------------------------------------------------------------
1 a,b
2 a,b,c