oracle對查詢到的數據進行求和統計


對查詢結果中的列中的數據進行統計求和,求和結果作為新的一行添加到查詢結果的末尾,

SELECT 
  CASE WHEN text IS NOT NULL THEN text ELSE'合計'END text,
  CASE WHEN text IS NOT NULL THEN id ELSE 0 END id,
  SUM(total_num)AS total_num
FROM (SELECT text,
       (CASE 
         WHEN ID = 1 THEN 1
         WHEN ID = 2 THEN 2
         WHEN ID = 3 THEN 4
         WHEN ID = 4 THEN 4
         WHEN ID = 5 THEN 5
         WHEN ID = 6 THEN 4
         WHEN ID = 7 THEN 4
        END) id,
        SUM(total_num) total_num
      FROM (
           SELECT aa.id, aa.text, 1 total_num  
           FROM (
                SELECT 1 id,'AAA' text FROM dual
                UNION
                SELECT 2 id,'BBB' text FROM dual
                UNION
                SELECT 3 id,'CCC' text FROM dual
                UNION
                SELECT 4 id,'CCC' text FROM dual
                UNION
                SELECT 6 id,'CCC' text FROM dual
                UNION
                SELECT 7 id,'CCC' text FROM dual
                UNION
                SELECT 5 id,'DDD' text FROM dual
                )aa 
           )
            GROUP BY text,(CASE 
                            WHEN id = 1 THEN 1
                            WHEN id = 2 THEN 2
                            WHEN id = 3 THEN 4
                            WHEN id = 4 THEN 4
                            WHEN id = 5 THEN 5
                            WHEN id = 6 THEN 4
                            WHEN id = 7 THEN 4
                           END )     
            ORDER BY id
) A
GROUP BY rollup(text,id)  
HAVING text IS NULL OR id IS NOT NULL

 

查詢結果中就這樣多了一個統計行:

 


免責聲明!

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



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