Oracle:Group By 后將某一列整合成一個字段;同時置於In中


一、使用  listagg() WITHIN GROUP ()  將多行合並成一行

SELECT SUM(H.NUM) TOTAL_NUM, 
LISTAGG(H.DETAIL_ID,
',') WITHIN GROUP(ORDER BY H.A, H.B, H.C) DETAIL_IDS, H.A, H.B, H.C FROM TABLE1 H WHERE H.ID= '1' GROUP BY H.A, H.B, H.C

 

二、將字符串使用逗號分隔並放於IN查詢語句中

SELECT CEIL(NVL(SUM(ABS(H.NUM)), 0) / OPPACK)                                               --CEIL 向上取整      NVL 校驗是否未NULL
  FROM TABLE2 H
 WHERE H.RELATION_DETAIL_ID IN
      (SELECT REGEXP_SUBSTR(G.DETAIL_IDS, '[^,]+', 1, LEVEL)
         FROM DUAL
      CONNECT BY REGEXP_SUBSTR(G.DETAIL_IDS, '[^,]+', 1, LEVEL) IS NOT NULL)

 


免責聲明!

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



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