oracle的 listagg() WITHIN GROUP () 行转列函数的使用

数据源

SELECT A.C_QBDM,A.C_QBLBMC,B.C_PXXMDM,  B.N_SORT
  FROM T_QB_LBXX A, T_QB_LBXX_PXXM B
 WHERE A.C_QBDM = B.C_QBDM
   AND A.C_PCJGDM = '001' 
   AND A.C_QBDM IN('001001','001002')
ORDER BY A.C_QBDM,B.C_PXXMDM;

将各个C_QBDM的C_PXXMDM、N_SORT列的值串起来

SELECT A.C_QBDM,A.C_QBLBMC,
       LISTAGG(TO_CHAR(B.C_PXXMDM),',') WITHIN GROUP( ORDER BY B.C_PXXMDM) AS C_PXXMDMS,
       LISTAGG(TO_CHAR(B.N_SORT),',') WITHIN GROUP( ORDER BY B.N_SORT) AS N_SORTS
  FROM T_QB_LBXX A, T_QB_LBXX_PXXM B
 WHERE A.C_QBDM = B.C_QBDM
   AND A.C_PCJGDM = '001' --同一培训机构
   AND A.C_QBDM IN('001001','001002')
 GROUP BY A.C_QBDM,A.C_QBLBMC;

/*
  C_QBDM	C_QBLBMC	C_PXXMDMS	        N_SORTS
1	001001	客货	    01001,02001,90016	1,2,4
2	001002	巡游	    09001,90015,90016	1,2,3
*/

 

参考:https://blog.csdn.net/shaotaiban1097/article/details/88327214

可以参考:https://blog.csdn.net/sinat_36257389/article/details/81004843

mysql相同效果的实现  https://blog.csdn.net/sinat_36257389/article/details/95052001

PostgreSQL 相同效果的实现 https://blog.csdn.net/sinat_36257389/article/details/95611686

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值