2016-12-16 55 views
0

我想創建一個標誌,顯示了一個1,當一個變量match_flg = total_match_flg,否則返回0。CASE WHEN語句沒有返回一個錯誤

當我運行下面的代碼

proc sql; 
create table xxxxxxx as 
    select*, 
    CASE 
    when match_flg = total_match_flg then 1 else 0 
    end as keep_flg 
quit; 

它返回所有1,並肯定在數據集中,該語句應該是false並返回一些0

我在做什麼錯了?

+1

發佈一些示例數據。否則,我們真的無法幫助您調試此問題。 – Tom

+0

我忘記了包含「From xxxxxxx;」在「結束爲」關鍵字之後,但是我的代碼中含有它 –

+0

通常,在詢問sql問題時,包含數據庫/表結構非常重要,可以幫助人們確定您做錯了什麼。我希望這個評論能幫助你找到解決你的問題的方法。 http://stackoverflow.com/help/mcve – 2016-12-16 19:06:07

回答

2

是因爲你沒有用from語句讀取任何數據嗎? 我跑了類似的代碼(添加了),它運行良好。

編輯:包括我的測試數據;

data test; 
    do i = 1 to 10; 
    match_flag = i; 
    total_match_flag = 10-i; 
    output; 
    end; 

    drop i; 
run; 

proc sql; 
    create table x as 
    select *, 
    case 
    when match_flag = total_match_flag then 1 else 0 
    end as keep_flg 
    from test; 
quit; 

作爲旁註,案例可能會笨拙地使用。請查看IFC/IFN功能。 http://www.lexjansen.com/wuss/2012/28.pdf