IF 等于或子句
IF equals or clause
我有一个存储过程,它运行两个单独的查询并将数据放入两个临时表中。然后我在下面有一个 IF 语句,根据结果将显示两个表之一。
DECLARE @DATASET1 AS FLOAT
DECLARE @DATASET2 AS FLOAT
SET @DATASET1 = (SELECT SUM(PREM) FROM #Prem1)
SET @DATASET2 = (SELECT SUM(PREM) FROM #Prem2)
IF (@DATASET1 = 0)
BEGIN
SELECT DATE,
SUM(PREM) AS PREM
FROM #DATASET2
GROUP BY YEAR, MONTH, DATE
ORDER BY YEAR, MONTH
END
IF (@DATASET2 = 0)
BEGIN
SELECT DATE,
SUM(PREM) AS PREM
FROM #DATASET1
GROUP BY YEAR, MONTH, DATE
ORDER BY YEAR, MONTH
END
直到我在 dataset1 上遇到一些没有产生 0 但根本没有产生数据的输出之前,它一直运行良好。
所以我想知道是否可以将这部分查询更新为几乎说:
IF (@DATASET1 = 0 or '')
我试过类似的东西,但似乎没有用,所以我的问题。
如果 table 或 PREM
列中没有记录,您的标量聚合查询 (SELECT SUM(PREM) FROM #Prem1
) 将 return 一个 NULL
值包含只有 NULL
个值。
你可以用 IS NULL
处理 NULL
,像这样:
IF (@DATASET1 IS NULL OR @DATASET1 = 0)
你也可以使用COALESCE()
:
IF (COALESCE(@DATASET1, 0) = 0)
你可以通过ISNULL()
来实现
IF (ISNULL(@DATASET1, 0) = 0)
Syntax: ISNULL(expression, value)
Parameter Description
expression Required. The expression to test whether is NULL
value Required. The value to return if expression is NULL
我有一个存储过程,它运行两个单独的查询并将数据放入两个临时表中。然后我在下面有一个 IF 语句,根据结果将显示两个表之一。
DECLARE @DATASET1 AS FLOAT
DECLARE @DATASET2 AS FLOAT
SET @DATASET1 = (SELECT SUM(PREM) FROM #Prem1)
SET @DATASET2 = (SELECT SUM(PREM) FROM #Prem2)
IF (@DATASET1 = 0)
BEGIN
SELECT DATE,
SUM(PREM) AS PREM
FROM #DATASET2
GROUP BY YEAR, MONTH, DATE
ORDER BY YEAR, MONTH
END
IF (@DATASET2 = 0)
BEGIN
SELECT DATE,
SUM(PREM) AS PREM
FROM #DATASET1
GROUP BY YEAR, MONTH, DATE
ORDER BY YEAR, MONTH
END
直到我在 dataset1 上遇到一些没有产生 0 但根本没有产生数据的输出之前,它一直运行良好。
所以我想知道是否可以将这部分查询更新为几乎说:
IF (@DATASET1 = 0 or '')
我试过类似的东西,但似乎没有用,所以我的问题。
如果 table 或 PREM
列中没有记录,您的标量聚合查询 (SELECT SUM(PREM) FROM #Prem1
) 将 return 一个 NULL
值包含只有 NULL
个值。
你可以用 IS NULL
处理 NULL
,像这样:
IF (@DATASET1 IS NULL OR @DATASET1 = 0)
你也可以使用COALESCE()
:
IF (COALESCE(@DATASET1, 0) = 0)
你可以通过ISNULL()
来实现IF (ISNULL(@DATASET1, 0) = 0)
Syntax: ISNULL(expression, value)
Parameter Description expression Required. The expression to test whether is NULL value Required. The value to return if expression is NULL