添加数字会保持返回NULL

时间:2011-07-21 16:56:39

标签: 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
);

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

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

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

2 个答案:

答案 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。