添加数字会保持返回NULL

mam*_*esh 1 sql sql-server

我有2个临时表,我用数字值填充:

CREATE TABLE #Initial
(
[SalesTax] NUMERIC (20,4),
[Unit] VARCHAR(10)
);

INSERT INTO #Initial ([SalesTax],[Unit])
(
SELECT SUM(SalesTax), Unit
FROM Billing
GROUP BY Unit
);

CREATE TABLE #End
(
[SalesTax] NUMERIC (20,4),
[Unit] VARCHAR(10)
);

INSERT INTO #End([SalesTax],[Unit])
(
SELECT SUM(SalesTax), Unit
FROM BillingEnd
GROUP BY Unit
);
Run Code Online (Sandbox Code Playgroud)

然后,当我在另一个查询中选择它们时,我试图将这些值一起添加(此查询是一个非常简单的更大查询示例.必须像这样完成):

SELECT 
u.Unit,
i.SalesTax,
e.SalesTax,
(i.SalesTax+ e.SalesTax) AS SalesTaxFeeTotal
FROM tblUnit u
LEFT JOIN #Initial i ON u.Unit = i.Unit
LEFT JOIN #End e ON u.Unit = e.Unit
Run Code Online (Sandbox Code Playgroud)

出于某种原因,当i.SalesTax和e.SalesTax列返回这些相同记录的值时,SalesTax列将返回NULL.

任一临时表中都没有NULL值.如果没有费用,则为0.00

为什么这些重新调整的空值?

gbn*_*gbn 5

改变这个

(i.StateFee + e.StateFee) AS StateFeeTotal
Run Code Online (Sandbox Code Playgroud)

至

(ISNULL(i.StateFee,0) + ISNULL(e.StateFee,0)) AS StateFeeTotal
Run Code Online (Sandbox Code Playgroud)

或者使用正确的列名称

(ISNULL(i.StateFeeBegin,0) + ISNULL(e.StateFeeEnd,0)) AS StateFeeTotal
Run Code Online (Sandbox Code Playgroud)

使用LEFT JOIN,您可以获取值的NULL.添加到其他任何内容的NULL将始终为NULL.这个答案使用ISNULL来替换NULL值.