[英]Group 2 rows into 1 in Oracle using SQL
I have a table which has data like 我有一个表,其数据如下
state total A 3 B 6 C 2 D 7 E 4
I need to generate a table from this that has total of A & B (true) together and C, D, E (False) together 我需要从中生成一个表,该表的总和为A&B(true)和C,D,E(False)
Result Table Status Total True 9 (sum of A and B ) False 13 (sum of C, D, E)
Any ideas how to do this using SQL? 任何想法如何使用SQL做到这一点? I am doing this in Oracle
我正在Oracle中这样做
SELECT nstate, SUM(total)
FROM (
SELECT DECODE(state, 'A', 'True', 'B', 'True', 'False') AS nstate, total
FROM mytable
)
GROUP BY
nstate
I'd use a UNION
query 我会使用
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;
You may need to group by Status on each query but I'm not sure as the column is virtual / static / scalar 您可能需要在每个查询中按状态分组,但我不确定,因为该列是虚拟/静态/标量
I like CASE - I think it's easier to interpret than DECODE: 我喜欢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;
Share and enjoy. 分享并享受。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.