2010-11-03 17 views
1

我有具有數據等組2行到Oracle 1使用SQL

 
state total 

A  3 

B  6 

C  2 

D  7 

E  4 

我需要從這個具有& B的總(真)產生一個表在一起並C,d表,E(False)

 
Result Table 

Status  Total 

True  9 (sum of A and B) 

False  13 (sum of C, D, E) 

任何想法如何使用SQL做到這一點?我在甲骨文這樣做

回答

6
SELECT nstate, SUM(total) 
FROM (
     SELECT DECODE(state, 'A', 'True', 'B', 'True', 'False') AS nstate, total 
     FROM mytable 
     ) 
GROUP BY 
     nstate 
+0

對不起。但我沒有很好地解決這個問題。請看這個... – mahen 2010-11-03 18:12:21

+0

@mahen:看看是什麼? – Quassnoi 2010-11-03 18:35:33

+0

@mahen:現在怎麼樣? – 2010-11-04 01:17:15

0

我會使用一個UNION查詢

SELECT 'True' AS Status, SUM(total) AS Total 
FROM table 
WHERE state IN ('A', 'B') 
UNION 
SELECT 'False' AS STATUS, SUM(total) AS Total 
FROM table 
WHERE state IN ('C', 'D', 'E') 
ORDER BY Status DESC; 

您可能需要按狀態對每個查詢,但我不知道作爲列是虛擬的/靜/標

0

我喜歡CASE - 我覺得它更容易比DECODE解釋:

CREATE TABLE RESULT_TABLE AS 
    SELECT STATE, SUM(TOTAL) AS TOTAL 
    FROM (SELECT CASE STATE 
        WHEN 'A' THEN 'True' 
        WHEN 'B' THEN 'True' 
        ELSE 'False' 
       END AS STATE, 
       TOTAL 
      FROM MY_TABLE) 
    GROUP BY STATE; 

分享和享受。