SQL将不同的列合并为一个语句

时间:2017-01-13 03:06:06

标签: sql

我正在构建一个使用SQL语句对三列求和的应用程序。下面是一个示例表:

Table1
column1     column2  column3
NULL        30.00    NULL
60.00       NULL     NULL
NULL        10.00    NULL
NULL        NULL     15.00

我想将column1,column2和column3合并为一个语句。我希望结果为115.00 (30.00 + 60.00 + 10.00 + 15.00)。该表可以包含三列中的一列中的数据,但绝不会包含任何两列中的数据。

这是我到目前为止所做的:

SELECT ISNULL(sum(column1),ISNULL(sum(column2),sum(column3)) as amount FROM Table1

结果是远程关闭。

3 个答案:

答案 0 :(得分:3)

COALESCE功能也可以使用。在给定的示例中:

SELECT sum(COALESCE(column1,0))
          + COALESCE(column2,0)
          + COALESCE(column3,0)
    AS TOTAL FROM Table1

答案 1 :(得分:1)

当列中有coalesce时,使用0分配null,然后对值进行求和。

SELECT SUM(coalesce(column1,0)+coalesce(column2,0)+coalesce(column3,0)) as amount 
FROM Table1

答案 2 :(得分:1)

在您的情况下,您可以这样做:

select sum(column1) + sum(column2) + sum(column3)
from table1 t;

由于每列至少有一个值,因此各个总和不会是NULL,因此这将给出预期值。

为了安全起见,您可以使用coalesce()

select coalesce(sum(column1), 0) + coalesce(sum(column2), 0) + coalesce(sum(column3), 0)
from table1 t;