为什么这个SQL查询在执行时会返回NULL?
请参阅代码 - 提前感谢
码:
SELECT
SUM(CONVERT(INT, Client_AmntApplied)) AS AmountApplied
FROM
ClientDatabase C
WHERE
DateReceivedMonth = 1
AND ADR1 = 2017
AND StepStatus IS NULL;
输出:
显然,没有记录与where子句一起返回。
WHERE DateReceivedMonth = 1
AND ADR1 = 2017
AND StepStatus IS NULL;
检查你的where子句,如果你想获得默认值的0
,只需使用ISNULL
SELECT SUM(CONVERT(INT, ISNULL(Client_AmntApplied,0))) AS AmountApplied
FROM ClientDatabase C
WHERE DateReceivedMonth = 1
AND ADR1 = 2017
AND StepStatus IS NULL;
如果没有要返回的记录,并且如果要显示默认值,则可以使用COALESCE
SELECT COALESCE(SUM(CONVERT(INT, ISNULL(Client_AmntApplied,0))),0) AS AmountApplied
FROM ClientDatabase C
WHERE DateReceivedMonth = 1
AND ADR1 = 2017
AND StepStatus IS NULL;
declare @ast varchar(10)
set @ast = null
SELECT SUM(CONVERT(INT, Client_AmntApplied)) AS AmountApplied
FROM ClientDatabase C
WHERE DateReceivedMonth = 1
AND ADR1 = 2017
and (StepStatus = ISNULL(@ast, StepStatus ) Or StepStatus is null)
除此之外,你还可以用qazxsw poi替换sum函数
试试这种方式
关于SUM的事实:
SUM(CONVERT(INT, ISNULL(Client_AmntApplied,0)))
(WHERE条件与任何记录不匹配或表是空的)NULL
值(因此NULL
是COALESCE(column, 0)
对结果没有影响)ISNULL(column, 0)
时,它将返回NULL
如果在没有要汇总的记录时想要得到0而不是NULL
,则可以使用以下表达式之一:
NULL
或者COALESCE(SUM(column), 0) AS columnSum
-- or --
ISNULL(SUM(column), 0) AS columnSum
构造(CASE..WHEN
只是一个简写)。
检查查询结果而不进行聚合,以检查是否有与WHERE条件匹配的记录。