CASE WHEN NULL 查询

CASE WHEN NULL query

我有以下现有查询:

SELECT SUM([Sales Amount (Actual)]) * 1.21
  FROM [DATABASE] 
  WHERE [Posting Date] = '2014-06-22' 
  AND [Location Code] = '129'

有时结果为 NULL,所以我想编辑查询和结果 '0' 如果结果为 NULL 否则显示正常结果。

我发现我应该使用 CASE 和 ISNULL 或 IS NULL,但我无法让它工作。

SELECT CASE WHEN SUM([Sales Amount (Actual)]) * 1.21
    IS NULL '0' 
    ELSE SUM([Sales Amount (Actual)]) * 1.21
    END FROM [DATABASE] 
    WHERE [Posting Date] = '2015-07-01' AND [Location Code] = '121'  

我收到错误:

Incorrect syntax near '0'.

有人可以帮我吗?

谢谢!

问题:

在条件后使用THEN

SELECT CASE WHEN SUM([Sales Amount (Actual)]) * 1.21
IS NULL THEN '0' 
ELSE SUM([Sales Amount (Actual)]) * 1.21
END FROM [DATABASE] 
WHERE [Posting Date] = '2015-07-01' AND [Location Code] = '121'  

更好的解决方案:

使用COALESCE

SELECT COALESCE(SUM([Sales Amount (Actual)]) * 1.21,0)
FROM [DATABASE] 
WHERE [Posting Date] = '2015-07-01' 
  AND [Location Code] = '121' 

COALESCE 将 return 第一个不为 null 的参数

SELECT ISNULL(SUM([Sales Amount (Actual)]) * 1.21, 0) Result
  FROM [TABLE] 
  WHERE condition

试试下面一个

SELECT SUM(ISNULL([Sales Amount (Actual)],0)) * 1.21
  FROM [DATABASE] 
  WHERE [Posting Date] = '2014-06-22' 
  AND [Location Code] = '129'

你的语法有误。我更喜欢你使用 COALESCE (ANSI 标准)而不是 ISNULL:

SELECT COALESCE(SUM([Sales Amount (Actual)]) * 1.21, 0) 
FROM [Table] 
WHERE [Posting Date] = '2015-07-01' AND [Location Code] = '121'