分组后多行数据合并成一个字段的处理

经常遇到,将数据库查询中,将按某一个字段分组后,获得的记录集中的另一个中文字段值,进行合并,通常情况下一般采用编程语言技术在后台进行循环处理,如果数据量较大,效率比较低,那么我们来看一下,数据库是如何自己处理的。
--MYSQL

SELECT T.分组字段,group_concat(T.连接字段)
from TABLENAME T
GROUP BY T.分组字段

其生成的连接字段是用逗号隔开的。

--ORACLE
在oracle中有一个wmsys用户,这个用户和sys,system等用户一样,是oracle安装的时候就创建的,主要负责oracle日常工作的管理(WM:work manager),
wm开头的函数是这个用户下的函数。

SELECT T.分组字段,WM_CONCAT(T.连接字段) AS NAME FROM TABLENAME T GROUP BY T.分组字段

其生成的连接字段也是用逗号隔开的。

--ORACLE 11 未验证,因为作者本机没有11G啊,希望同志们验证
SELECT LISTAGG(T.连接字段, ',') WITHIN GROUP( ORDER BY T.分组字段) AS NAME FROM TABLENAME T

猜你喜欢

转载自misxjq.iteye.com/blog/2285617