1
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 の列を考慮に入れようとしています。しかし、私のケースステートメントは問題を引き起こします。他の例を確認しましたが、それが役立つ理由がわかりません

4

3 に答える 3

4

COALESCE明示的な条件なしで目標を達成するために使用できるようです:

SELECT *,  
  (Total_Retail_Price - (Total_Retail_Price * COALESCE(Discount, 0))) * Quantity AS Rev
FROM DATA.Cumulative_Profit_2013 AS P
于 2015-04-04T13:06:26.393 に答える
3

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 式の末尾に列の別名を付けます。

于 2015-04-04T13:04:28.203 に答える