簡體   English   中英

SQL Case Statement NULL列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM