[英]SQL Case Statement NULL column
proc SQL;
CREATE TABLE DATA.DUMMY AS
SELECT *,
CASE
WHEN (Discount IS NOT NULL)
THEN (Total_Retail_Price - (Total_Retail_Price * Discount)) * Quantity AS Rev
ELSE (Total_Retail_Price * Quantity) AS Rev
END
FROM DATA.Cumulative_Profit_2013 AS P
;
我正在嘗試將可能為NULL的列作為收入表達式的一部分。 但是我的案情陳述引發了問題。 我檢查了其他示例,但看不到為什么會有幫助
看起來您可以使用COALESCE
來實現目標,而無需明確的條件:
SELECT *,
(Total_Retail_Price - (Total_Retail_Price * COALESCE(Discount, 0))) * Quantity AS Rev
FROM DATA.Cumulative_Profit_2013 AS P
在不知道SAS的情況下,正常的SQL語法為:
SELECT *,
CASE
WHEN (Discount IS NOT NULL)
THEN (Total_Retail_Price - (Total_Retail_Price * Discount)) * Quantity
ELSE (Total_Retail_Price * Quantity)
END AS Rev
即,case表達式結束后帶有列別名。
注意,我將其寫為:
SELECT p.*,
(Total_Retail_Price * (1 - COALESCE(Discount, 0)) * Quantity) AS Rev
FROM DATA.Cumulative_Profit_2013 AP
我發現很難Total_Retail_Price
原始表達式中Total_Retail_Price
的重復。
注意:所有答案均適用於SAS。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.