2016-12-16 4 views
0

Я пытаюсь создать флаг, который показывает 1, когда переменная match_flg = total_match_flg, в противном случае возвращает 0.случай, когда заявления не возвращает ложное

Когда я запускаю следующий код

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

его возвращает все 1 и уверен, что в наборе данных это утверждение должно быть ложным и возвращать 0

Что я делаю неправильно?

+1

Опубликовать несколько примеров данных. В противном случае мы действительно не можем помочь вам отладить эту проблему. – Tom

+0

Я забыл включить «От xxxxxxx;» после ключевого слова «конец как», но у меня есть это в моем коде –

+0

Обычно, задавая вопросы sql, очень важно включать структуру базы данных/таблицы, чтобы помочь людям определить, что вы делаете неправильно. Надеюсь, этот комментарий поможет вам найти решение вашей проблемы. http://stackoverflow.com/help/mcve –

ответ

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

Смежные вопросы