Proc sql最后不是空字段

时间:2016-10-31 07:47:23

标签: sas

一天中的好时光。

以下是我需要解决的问题:

我有一些带有列的表table1:field, stage1 - stage10. 是否可以使用PROC SQL语句CREATE TABLE创建带有字段的表2:field1, final_stage其中最后一个阶段是数组stage1 - stage10中的最后一个NOT EMPTY FIELD。谢谢你;

我知道如何使用数据步骤:

data table2 (keep field1 final_stage);
set table1;
array final_stage[10] stage1-stage10;
do i=1 to 10;
If final_stage[i] ^= "" then final_stage=final_stage[i];run;

1 个答案:

答案 0 :(得分:1)

您可以尝试撤消订单并使用coalescec功能,如下所示:

proc sql;
create table table2 as
  select field1
    ,coalescec(stage10,stage9,stage8,stage7,stage6
      ,stage5,stage4,stage3,stage2,stage1) as final_stage
  from table1;

coalescec函数解析为列表中的第一个非缺失字符值(请参阅documentation)。