我正在构建一个使用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
结果是远程关闭。
答案 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;