首页 > 数据库 > Oracle > 正文

ORACLE列值合

2019-11-02 14:30:26
字体:
来源:转载
供稿:网友

 合列值最通用的方法就是一自定函去,介的是其他方法。

在SQL Server中合列值可以使用For Xml Path,在Oracle中可以使用wm_concat 或 ListAgg。

1 2 3 4 5 6 7 8 9 10 11 12 CREATE TABLE MyTest(xType NUMBER,City nvarchar2(200)); /   INSERT INTO MyTest(xType,City) SELECT
依依电影网[www.aikan.tv/special/yiyidianyingwang/]
1,N'北京' FROM dual UNION ALL SELECT 1,N'上海' FROM dual UNION ALL SELECT 1,N'广州' FROM dual UNION ALL SELECT 2,N'武汉' FROM dual UNION ALL SELECT 2,N'杭州' FROM dual UNION ALL SELECT 2,N'厦门' FROM dual COMMIT; /

使用wm_Concat:

1 2 3 SELECT xType,wmsys.wm_concat(to_char(City)) AS xCity FROM MyTest GROUP BY xType

使用ListAgg:

1 2 3 4 SELECT xType,        ListAgg(to_char(City),',') WITHIN GROUP(ORDER BY xType) AS xCity FROM MyTest GROUP BY xType

果:

XTYPE XCITY
---------- --------------------------------------
1 北京,广州,上海
2 杭州,武汉,厦门 

0、上面在City列前都加了To_Char()函,是了防止出的情;

1、wm_concat 在ORACEL的官方文中有,不能保各版本的兼容性;

2、ListAgg是11g版本才出的新的聚集函。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表