我有具有数据等组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