Oracle查詢中將結果列按分組用逗號隔開,拼接成一行(listagg函數)


  在Oracle的select查詢中,我們經常遇到將結果進行分組,某個字段按照分組用逗號隔開,拼接成一行顯示,如下:

    A  B

    a  1

    a  2

    b  3

    b  4

  A、B兩列是查詢結果,現要展示成如下:

    A  B

    a  1,2

    b  3,4

  可以使用listagg函數:

select A,listagg(B,',') within group (order by B) as B
  from table
group by A

  如果將select出來的一列全部轉成行,那么group by語句都不需要:

select listagg(B,',') within group (order by B) as B
  from table

  結果是 1,2,3,4

  而且這個listagg函數可以放在查詢語句的子查詢里面,很方便

select id,loginid,
       (select listagg(h1.id,',') within group (order by h1.id)
          from hrmresource h1
         where h1.managerid = h.id) str
from hrmresource h

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM