[英]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.