SAS內部Proc SQL案例混淆
我有一個proc-sql步驟,我正在使用創建宏變量來做一些列表處理。
我已經遇到了一個令人困惑的步驟,其中,使用CASE語句,而不是一個WHERE語句的結果所產生的數據集是一個空字符串(「」)
有包含在沒有空字符串的第一行任一表中的字段。
這些是與所有的宏業務爲簡單起見移除的兩個示例SQL以下步驟:使用所述第一片的代碼的結果是具有多個行的表
create table test as
select distinct
case
when brand in (select distinct core_brand from new_tv.core_noncore_brands) then brand
end as brand1
from new_tv.new_tv2
;
create table test2 as
select distinct brand
from new_tv.new_tv2
where brand in (select distinct core_brand from new_tv.core_noncore_brands)
;
,第一個是一個空字符串。
第二段代碼按預期工作
有什麼理由爲此?
這個問題所以null基本上是行的結果,這些行不屬於true,並且返回一個空字符串,因爲我沒有ELSE? – scott
的確,它們仍然被選中,因爲它們不被WHERE標準排除。由於它們不符合CASE標準,因此它們爲NULL,您可以通過ELSE或其他WHEN/THEN方式在CASE語句中給它們一個不同的值,或者在WHERE標準中限制它們。 –
真棒,謝謝 – scott