日期:2014-05-17  浏览次数:20430 次

sql分组将一列值转换为一个字段,用逗号分隔
在线等~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
表结构和数据如下:
NAME ROWNO ORGID
a 1 1
b 2 1
c 3 1
asdf 1 2
12334 1 3
---------------------
转换后的结果如下:
NAME ROWNO ORGID
a,b,c   1       1
asdf 1 2
12334 1 3

即,orgId相同的行,将其name拼装成一个字段,用逗号分开; rowNo是无关紧要的字段,可以考虑也可以不考虑。

怎么将结果写出来,不要用函数,也不用存储过程,而且这张表的数据是动态的,并不一定就是这几行。
求大神降下天书一卷,解小弟困惑。
注:数据库为DB2
DB2 sql

------解决方案--------------------
select ORGID,wm_concat(NAME) from tlb  
group by ORGID
oracle写法
------解决方案--------------------

 --select 'a' NAME, 1 ROWNO, 1 ORGID
 --into #t
 --union all select 'b', 2 ,1
 --union all select 'c', 3 ,1
 --union all select 'asdf', 1 ,2
 --union all select '12334', 1 ,3

select stuff(
(select ','+name 
 from #t b 
 where a.ORGID=b.ORGID for xml path(''))
 ,1
 ,1
 ,'') as NAME
 ,min(ROWNO) as ROWNO
 ,ORGID
 from #t a
 group by ORGID

这是sql server的写法,db不知道有没有类似的
------解决方案--------------------
参考;
ORACLE和DB2数据库GROUP BY条件下合并行记录
------解决方案--------------------
引用:
Quote: 引用:

参考;
ORACLE和DB2数据库GROUP BY条件下合并行记录

头像很漂亮!
这种写法我试过,因为是在自己开发的一个数据库平台上进行查询,所以不支持xmlAgg这些函数。


不支持就不好弄了,我对DB2不了解,我看到的都是这种;
http://www.2cto.com/database/201212/177065.html