条件SUM T-SQL

Sek*_*har 5 sql null sum aggregate-functions

我有这种格式的表格

COL1 COL2 COL3
A    NULL  4
A    NULL  4
A    VAL1  4
A    VAL2  4
A    VAL3  4
B    NULL  5
B    VAL1  6
Run Code Online (Sandbox Code Playgroud)

我需要输出如下输出:

COL1 TOTAL VALID
A    20     12
B    11     6
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何获得'VALID'列 - 只有当col2不为null时才应该使用col3的总和.

我能够使用SUM和group by子句正确获取'TOTAL'字段.但是如何计算'VALID'列呢?

有任何想法吗?非常感谢!

spe*_*593 17

像这样的东西:

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
Run Code Online (Sandbox Code Playgroud)

"技巧"是使用CASE表达式有条件地返回col3的值.