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