我有具有數據等組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做到這一點?我在甲骨文這樣做
我有具有數據等組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做到這一點?我在甲骨文這樣做
SELECT nstate, SUM(total)
FROM (
SELECT DECODE(state, 'A', 'True', 'B', 'True', 'False') AS nstate, total
FROM mytable
)
GROUP BY
nstate
我會使用一個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;
您可能需要按狀態對每個查詢,但我不知道作爲列是虛擬的/靜/標
我喜歡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;
分享和享受。
對不起。但我沒有很好地解決這個問題。請看這個... – mahen 2010-11-03 18:12:21
@mahen:看看是什麼? – Quassnoi 2010-11-03 18:35:33
@mahen:現在怎麼樣? – 2010-11-04 01:17:15