sql - 我只需要 Total return NULL 如果所有值都是 NULL

标签 sql sql-server tsql

像这样的查询

      SELECT A,B,C,D, (A+B+C+D) as TOTAL
      FROM TABLES

如果 A、B、C 和 D 为 NULL。我需要返回 NULL。 但是如果其中任何一个不为NULL。其他将从 NULL 变为零。 和总计(a+b+c+d)。

现在试试这个方法

      SELECT A,B,.. CASE WHEN (A IS NULL) AND (B IS NULL) AND ... THEN NULL
                    ELSE ISNULL(A,0) + ISNULL(B,NULL) +... END 

但是它太长了,我在整个查询中有很多总数。 解决这个问题的最佳方法是什么?

最佳答案

您想要的语义与 SUM 提供的语义相同。

SELECT A,B,C,D,
       (SELECT SUM(val)
        FROM   (VALUES(A),
                      (B),
                      (C),
                      (D)) T (val)) AS Total
FROM   YourTable

关于sql - 我只需要 Total return NULL 如果所有值都是 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53236166/

相关文章:

mysql - 使 select sum() 不返回 null

sql-server - 选择按日期排序的每组的前 N ​​行

tsql - T-SQL日期之间的困惑

php - SQL 连接/Doctrine/Symfony2 : Only getting one result from join when I expect multiple

php - 从 mySQL 中获取值到多维数组中

sql - 带有子查询的选项(MAXDOP)?

sql - 通过 SQL 返回硬编码值的不同方式

sql-server - 在 SQL Server 中将 2017 年 5 月 2 日之类的字符串转换为日期时间的最佳方法

mysql - 在一个派生表上进行多项选择

c# - 执行存储过程时,使用 CommandType.StoredProcedure 与使用 CommandType.Text 相比有什么好处?