CASE WHEN语句不返回false

时间:2016-12-16 15:19:54

标签: sas

我正在尝试创建一个显示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,并确保在数据集中该语句应为false并返回0

我做错了什么?

1 个答案:

答案 0 :(得分: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