簡體   English   中英

SAS宏變量表示Proc SQL中IN語句中的內容

[英]SAS Macro variable to represent what is in an IN statement in Proc SQL

我有一個查詢,我想通過Proc SQL中的SAS運行,我從我們的公司數據庫中獲取數據。 在查詢的頂部,為了便於使用,我希望能夠輸入一個輸入變量列表。 我有興趣僅在某些日期和某些州獲取數據。 我關心的日期是連續的,所以我只為開始日期和結束日期創建一個SAS宏變量,並使用一個between語句。 這很容易。 但是,對於州,我不能做這樣的事情。 所以,我的想法是做類似的事情

%LET States = ('CT', 'MD', 'ME', 'NC', 'WV');

然后,我想做一個where聲明

WHERE (State_Tp IN &States)

現在,這不起作用。 而且,我嘗試了其他幾種變體,但我似乎無法讓它發揮作用。 這樣的事情可能嗎?

雖然你的代碼很好,但是一個更好的解決方案(無論如何可能有更少的問題)將是創建一個具有所需狀態的數據集,並加入它(或者如果這更符合你的需要,則使用exists子句)。 這更容易維護(因為您可以將數據集保持在與代碼分開的易於編輯的格式中,例如在excel中),並且在某些情況下可能更快。

data states;
input state_tp $;
datalines;
CT
MD
ME
NC
WV
;;;;
run;

proc sql;
create table test as
select Z.* 
 from sashelp.zipcode Z
 inner join
 states s 
 on z.state_tp=s.state_tp;
quit;

要么

proc sql;
create table test as
select * from sashelp.zipcode z
where exists (
  select 1 from states s
   where s.state_tp=z.state_tp);
quit;

暫無
暫無

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

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