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'
我有以下现有查询:
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'