SQL语句实现行转列

时间:2023-03-08 22:09:08

最近在维护一个项目,出现了一下bug需要进行调试,于是把正式库上面的代码搬到本地库上面,数据库是本地的,跑项目的时候调试发现代码里面带有wmsys.wm_concat函数的SQL语句出现错误,经排查发现本地测试库用的是oracle 11g版本,比正式库上的版本高,解决方式这分享给大家:

wmsys.wm_concat是oracle 10g推出的,用来连接字符串,LISTAGG是oracle 11g推出的,它的作用和wmsys.wm_concat是一样的。

select listagg(p.id_card,',') within group(order by p.PERSON_ID) PERSON_IDCARDS from  cbms_lib_person p where p.person_id in (136565,158756,158762,158761,149569,153512,89376,70196)

截图效果如下地址:
![](https://img2018.cnblogs.com/blog/1311553/201811/1311553-20181108102531176-1161827259.png)