我有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
);
然后我尝试在另一个查询中选择它们时将这些值添加到一起(此查询是一个非常简单的更大查询示例。必须像这样完成):
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
由于某些原因,当i.SalesTax和e.SalesTax列返回这些相同记录的值时,SalesTax列将返回NULL。
临时表中没有NULL值。如果没有费用,则为0.00
为什么这些重新调整空值?
答案 0 :(得分:5)
更改此
(i.StateFee + e.StateFee) AS StateFeeTotal
到
(ISNULL(i.StateFee,0) + ISNULL(e.StateFee,0)) AS StateFeeTotal
或者可能是正确的列名
(ISNULL(i.StateFeeBegin,0) + ISNULL(e.StateFeeEnd,0)) AS StateFeeTotal
使用LEFT JOIN,您可以获取值的NULL。添加到其他任何内容的NULL将始终为NULL。这个答案使用ISNULL来替换NULL值。
答案 1 :(得分:1)
选择StateFeeBegin和StateFeeEnd,但是从Initial和End添加两个名为StateFee的列。使用ISNULL(YourField, 0)
将任何空出现替换为0。