我有将发票数量乘以手动价格的收入脚本,如果手动价格为空,它将乘以标价,那么如果两者都为空,则值将为 0。
但我的问题是我在手动价格上有 0 个值,所以因为它是优先级字段,我得到 0 收入,这不应该是因为标价不是 0。
我尽可能希望 CASE 语句作为我最后的手段,但如果真的没有更简单的方法,那么我会使用它。
SELECT INVOICE_QUANTITY * ISNULL(MANUAL_PRICE,ISNULL(LIST_PRICE,0)) as Revenue
您可以添加NULLIF
以将0
值视为NULL
值:
SELECT INVOICE_QUANTITY * COALESCE(NULLIF(MANUAL_PRICE, 0), LIST_PRICE, 0) as Revenue
我还将双ISNULL
函数更改为单COALESCE
函数。
然后不要使用 ISNULL()
. 使用适当的逻辑:
SELECT (INVOICE_QUANTITY *
(CASE WHEN MANUAL_PRICE <> 0 THEN MANUAL_PRICE
WHEN LIST_PRICE IS NOT NULL THEN LIST_PRICE
ELSE 0
END)
) as Revenue