oracle根据a列中相同的值,获取将对应的B列中各个值合并的结果集


从A查询结果得到B查询结果:

A

--源表 table_t

  a                b
 
广东         广州
 
广东         深圳
 
广西         南宁
 
广西         北海
 
B
--结果表
 
  a                     b
 
广东          广州,深圳
 
广西          南宁,北海
 
使用SQL
select a,WMSYS.WMCONCAT(b) b
    from table_t
    group by a;

合并后的结果B列的数据类型是clob,可以使用to_char()转换。

SQL如下

select a,to_char(WMSYS.WM_CONCAT(b)) b
 
from table_t 
 
group by a

 还有一种方法:

SQL> SELECT LISTAGG(B,',') WITHIN GROUP(ORDER BY B DESC) B,A FROM TABLE_T GROUP BY A;

B                                                                                A
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
深圳,广州                                                                        广东
南宁,北海                                                                        广西

使用LISTAGG函数,其语法是

  LISTAGG(expr,['delimiter']) WITHIN GROUP(ORDER_BY_CLAUSE)


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM