oracle行列转换
多行转一行: 表结构: 列转行函数:LISTAGG() 先看示例代码: 1.withtempas( 2.select'China'nation,'Guangzhou'cityfromdualunionall 3.'Shanghai'city4.'Beijing'city5.'USA'nation,255)">'NewYork'city6.'Bostom'city7.'Japan'nation,255)">'Tokyo'cityfromdual 8.) 9.selectnation,listagg(city,255)">',')withinGROUP(orderbycity) 10.fromtemp 11.groupbynation 这是最基础的用法: LISTAGG(XXX,XXX) WITHIN GROUP( ORDER BY XXX) 用法就像聚合函数一样,通过Group by语句,把每个Group的一个字段,拼接起来。 非常方便。 同样是聚合函数,还有一个高级用法: 就是over(partition by XXX) 也就是说,在你不实用Group by语句时候,也可以使用LISTAGG函数: select500population,85)">select1500population,85)">select1000population,85)">selectpopulation, 10.nation,250)">11.city,250)">12.listagg(city,85)">bycity)over(partitionbynation)rank 13.temp 总结一下:LISTAGG()把它当作SUM()函数来使用就可以。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |