仅当所有列值不为0时才使用SUM行

时间:2018-01-11 12:36:29

标签: sql sql-server

我的这个表有五列(a,b,c,d,e),我需要对列的值求和,但前提是该特定行的每列值都不是0。 / p>

让我们说我的表是这样的:

String user="sys as sysdba"

在这种情况下,我只需要对第2行和第3行的值求和,因为在第1行中有一个0,但我不确定如何去做它

3 个答案:

答案 0 :(得分:4)

您可以使用not in

来实现此目的
select sum(a),sum(b), sum(c), sum(d), sum(e) 
from tbl 
where 0 not in (a, b, c, d, e)

Demonstration

答案 1 :(得分:1)

试试这个

SELECT
    SUM(
       CASE WHEN A > 0 THEN A END
       +
       CASE WHEN B > 0 THEN B END
       +
       CASE WHEN C > 0 THEN C END
       +
       CASE WHEN D > 0 THEN D END
       +
       CASE WHEN E > 0 THEN E END
       )
       FROM YourTable

答案 2 :(得分:0)

...也许

WITH VTE AS (
    SELECT *
    FROM (VALUES (1,0,2,1,2),
                 (1,1,1,2,1),
                 (1,3,4,5,2)) V(a,b,c,d,e))
SELECT CASE WHEN 0 NOT IN(a,b,c,d,e) THEN a+b+c+d+e END AS SumValue
FROM VTE;

OP没有说明在行有0的情况下返回的内容,因此返回 NULL