這可以使用SAS Macro語言來完成,該語言是爲這種情況設計的。我不會進行大討論,但以下內容應該有效。公平的警告,我沒有測試這個,所以我可能在某處有語法錯誤,但如果沒有其他的東西,這應該給你一個完成解決方案的基礎。
/*宏以%macro關鍵字開頭。宏可以帶參數,但在這種情況下不需要。宏特定的命令用'%'字符表示。 */
%macro read_multiple_files;
%do i = 1 %to 7;
/* from this point forward, the use of '&i.' will resolve to the
appropriate loop counter 1-7 */
proc sql;
create table tmp&i. as
select *
from test&i..acc
where datepart(timestamp) in
(select max(datepart(timestamp))
from test&i..acc);
run; quit;
%end;
%mend read_multiple_files;
/* The '%mend' command doesn't really require the name of the macro to be appended, but I consider it to be good practice to include it */
/* The preceding code defines the macro program. Now to execute the job, you NEED one last command. */
%read_multiple_files;
我希望這是有幫助的。你會發現宏編程在很多實例中非常有用。這是一個很好的入門白皮書。 http://www2.sas.com/proceedings/sugi29/243-29.pdf。
我不清楚你確切的問題是什麼,如何簡化你的查詢?你有什麼問題與時間戳? – Reeza
你使用SAS宏語言嗎?這是避免複製和粘貼的一種方法。它是一種用於生成SAS代碼而不是自己輸入的語言。您也可以考慮將所有七個表格讀入一個SAS數據集。 – Quentin