[英]CONDITIONAL SUM T-SQL
我有這種格式的表格
COL1 COL2 COL3
A NULL 4
A NULL 4
A VAL1 4
A VAL2 4
A VAL3 4
B NULL 5
B VAL1 6
我需要輸出如下輸出:
COL1 TOTAL VALID
A 20 12
B 11 6
我的問題是,我如何獲得'VALID'列 - 只有當col2不為null時才應該使用col3的總和。
我能夠使用SUM和group by子句正確地獲取'TOTAL'字段。 但是如何計算'VALID'列呢?
有任何想法嗎? 非常感謝!
像這樣的東西:
SELECT col1
, SUM(col3) AS TOTAL
, SUM(CASE WHEN col2 IS NOT NULL THEN col3 ELSE NULL END) AS VALID
FROM mytable
GROUP BY col1
“技巧”是使用CASE表達式有條件地返回col3的值。
您可以使用子查詢:
SELECT SUM(Col3) AS Total,
(SELECT SUM(Filtered.Col3)
FROM table Filtered
WHERE Filtered.Col1 = Grouped.Col1
AND Filtered.Col2 IS NOT NULL
) AS Valid
FROM table Grouped
GROUP BY Col1
這應該工作......
SELECT B.COL1, SUM(A.COL3) AS TOTAL, SUM(B.COL3) AS VALID
FROM
(SELECT COL1, COL3 FROM ORIGINAL WHERE COL2 IS NULL) A
INNER JOIN (SELECT COL1, COL3 FROM ORIGINAL) B ON A.COL1 = B.COL1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.