oracle 连表查询多行分组合并,筛选字段以逗号隔开

  • Post author:
  • Post category:其他


需求:相同ID行对应的name值以逗号隔开,查询字段较多时,直接group by 无法实现需求

解决方法: oralce 9 支持 WM_CONCAT内建函数

oracle 11 优化为LISTAGG() WITHIN GROUP()分析函数 (可以排序,针对结果再group by)

SELECT
    CE.SERIAL_NO,CE.ID,
    LISTAGG ( EC.CERTIFICATENAME, ',' ) WITHIN GROUP ( ORDER BY CE.ID ) 
FROM
    MMIS_COM.COM_EMPLOYEE CE
    LEFT JOIN EMPLOYEE_CERTIFICATE EC ON CE.ID = EC.EMPID 
    AND EC.SYZT = 0 
WHERE
    CE.SYZT = 0 
    AND ( ( CE.SSYYDM = '314000' ) ) 
GROUP BY
    CE.SERIAL_NO,CE.ID ORDER BY CE.ID

执行结果:



版权声明:本文为weixin_44967669原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。