我有一个查询来计算加税后的总金额和数量的价格。我创建了一个公式,如果填写了所有字段,则计算值很好。 我的问题是,如果没有输入单个字段,在某些情况下不适用,我得到的结果是NULL。
CREATE TABLE StockRequest
(
ID Int,
Item Varchar(25),
RequestedQty Int,
Price Int,
MiscExpense Int,
ExchangeRate Int
);
INSERT INTO StockRequest VALUES (1, 'Bottle', '2', '25', '2', '3');
INSERT INTO StockRequest VALUES (2, 'Mouse', '10', '150', NULL, NULL);
INSERT INTO StockRequest VALUES (3, 'Mouse Pad', '5', '70', '2', '3');
INSERT INTO StockRequest VALUES (4, 'Glass', '6', '100', '2', NULL);
INSERT INTO StockRequest VALUES (5, 'Cup', '6', '50', NULL, '3');
SELECT Item, RequestedQty, Price, (RequestedQty*Price)+MiscExpense+ExchangeRate AS [Total]
FROM StockRequest
答案 0 :(得分:1)
如果是null
或不使用ISNULL
SELECT Item, RequestedQty, Price,
(ISNULL(RequestedQty, 1)*ISNULL(Price, 1))+ISNULL(MiscExpense,
1)+ISNULL(ExchangeRate, 1)AS [Total]
FROM StockRequest
ISNULL
检查列值是否为null。如果为null则将列值设置为给定参数(在这种情况下我给了1
)
答案 1 :(得分:1)
您可以使用ISNULL功能。
用指定的替换值替换NULL。
未经测试,但可能还好:
SELECT
[Item]
, [RequestedQty]
, [Price]
, (ISNULL([RequestedQty], 0) * ISNULL([Price], 0) + ISNULL([MiscExpense], 0) + ISNULL([ExchangeRate], 0)) AS [Total]
FROM [StockRequest];
更新:当然,必须根据所需的业务逻辑选择替换值。
答案 2 :(得分:1)
使用ISNULL
TestEnvironment
<强>输出强>
SELECT Item, RequestedQty, Price,
(RequestedQty*Price)+ISNULL(MiscExpense,0)+ISNULL(ExchangeRate,0) AS [Total]
FROM StockRequest