簡體   English   中英

使用SAS中的PROC SQL選擇變量范圍

[英]Select range of variables with PROC SQL in SAS

我想根據一系列類似變量選擇符合某些條件的行:

proc sql;
  create table2 as
  select * from table1 
  where proc1 in ('111', '222', '333') or
        proc2 in ('111', '222', '333') or
        proc3 in ('111', '222', '333');
quit;

有沒有辦法可以更有效地選擇變量? 在SAS的data step ,我可以使用proc1-proc3 ,但這不能在proc SQL完成。

不可能完全做到這一點,但有一些選項可能會適合你。

首先編寫一個sql語句,將這些條件寫入宏變量proc_conditions

proc sql;
  select compbl(name ||' in ('111', '222', '333')')
  into : proc_conditions separated by ' or '
  from sasHelp.vcolumn
  where libName = 'WORK'
    and memName = 'TABLE2'
    and upcase(Name) like 'PROC%'
  ;

請注意,libName和memName在元數據中始終為大寫,而字段名稱或混合大小寫(但不區分大小寫)。 我添加了Compbl以減少多個空白到單打,但這不是必需的。

您可以檢查結果是proc1 in ('111', '222', '333') or proc2 in ('111', '222', '333') or proc3 in ('111', '222', '333')將其寫入日志。

  %put &proc_conditions;

然后就使用它

  create table2 as
  select * from table1 
  where &proc_conditions;
quit;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM