求助SQL写法,不规则行转列问题

[复制链接]
查看11 | 回复7 | 2013-2-25 14:51:24 | 显示全部楼层 |阅读模式
表结构:
USER_NAME USER_TXT
TOM
123
TOM
232
TOM
456
TOM
782
TOM
945
JAY
353
JAY
256
JAY
870
LUCY
791
LUCY
275
想要得到的结果:
USER_NAMEUSER_TXT
TOM
123,232,456,782,945
JAY
353,256,870
LUCY
791,275

就是同一个名字一条记录,把TXT拼起来,中间加逗号

回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
oracle 11g R2下实测


捕获.PNG (12.68 KB, 下载次数: 2)
下载附件
2013-1-10 09:54 上传



窗体标题.png (4.45 KB, 下载次数: 2)
下载附件
2013-1-10 09:54 上传

回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
select wm_concat(name) name from user;--10g写法
select listagg(name,',') within group (order by name) name from user;--11g写法

回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
LuiseDalian 发表于 2013-1-10 09:55
oracle 11g R2下实测

谢谢,辛苦了,还亲自测试,分数给你吧
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
同样感谢
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
2楼也是可以的,不过得改进一下
select user_name, listagg(user_txt,',') within group (order by user_txt) user_txt from t
GROUP BY user_name;

回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
sandwater 发表于 2013-1-10 09:48
select wm_concat(name) name from user;--10g写法
select listagg(name,',') within group (orde ...

同样感谢
回复

使用道具 举报

千问 | 2013-2-25 14:51:24 | 显示全部楼层
wm_concat函数在同样的10g下执行结果不同:
with a as(
select 1 id,'aa' name from dual union all
select 1 id,'bb' name from dual union all
select 2 id,'cc' name from dual union all
select 2 id,'dd' name from dual)
select id,wm_concat(name) name
from a
group by id;
----
ID
NAME
1
1,1
2
2,2
select * from v$version
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production
CORE
10.2.0.4.0
Production
TNS for IBM/AIX RISC System/6000: Version 10.2.0.4.0 - Productio
NLSRTL Version 10.2.0.4.0 - Production
----------------------------------
with a as(
select 1 id,'aa' name from dual union all
select 1 id,'bb' name from dual union all
select 2 id,'cc' name from dual union all
select 2 id,'dd' name from dual)
select id,wm_concat(name) name
from a
group by id;
----
ID
NAME
1

2

select * from v$version
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bi
PL/SQL Release 10.2.0.5.0 - Production
CORE
10.2.0.5.0
Production
TNS for IBM/AIX RISC System/6000: Version 10.2.0.5.0 - Productio
NLSRTL Version 10.2.0.5.0 - Production
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行