簡體   English   中英

條件SUM T-SQL

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM