我目前在使用遞增數據範圍輸出表時遇到問題,該表使用充滿JobOffers的電子郵件表填充已使用VBA重命名的表 - 這更適合我自己的學習。SAS SQL宏增量日期範圍
我想通過幾天的代碼迴路我可以在宏命令
%EmailDump('01Jan2015'd,'02Jan2015')
設置它將運行在下面的代碼宏並允許我在此期限內拉回來所有的電子郵件和導出(我明白我每次都在寫表 - 但是這將出口(每個出口應該是不同的,因爲它有內它EmailStart宏)
因此,對於這個有些假數據會看起來像
主題EmailS tartDate
工作機會2015年12月1日
工作機會25/01/2015
工作機會2015年12月5日
使用的代碼是低於
%Macro EmailDump(begindate,endindate);
%do
EmailStart = &begindate.
%to &endindate.
%by 1;
%end;
PROC SQL;
CREATE TABLE WORK.EMAILDUMP AS
SELECT * FROM WORK.EMAILS
WHERE TOPIC = 'JobOffer'
and EmailStartDate = &EmailStart
;QUIT;
proc export data=work.EMAILDUMP
dbms=XLSX
outfile="/p01/Output File &EmailStart " replace;
run;
%Mend EmailDump;
%EmailDump('01Jan2015'd,'02Jan2015'd);
錯誤信息如下所示
錯誤:在需要數字操作數的%EVAL函數或%IF條件中找到字符操作數。條件是: & begindate。 錯誤:%DO EmailStart循環的%FROM值無效。 錯誤:在需要數字操作數的%EVAL函數或%IF條件中找到字符操作數。條件是: & endindate。 錯誤:%DO EmailStart循環的%TO值無效。 錯誤:宏EmailDump將停止執行
不知道是否有人能幫助我嗎?非常感謝任何幫助!
您應該更具體地描述您遇到的問題。遇到錯誤消息時分享。具體說明你想要的代碼。 – floydn
從代碼的粗略看來,我發現應該將%end語句向下移動並放置在proc導出之後。假設你想要proc sql和proc export在循環中每天運行。當然,我只能假設,因爲你沒有分享你對代碼的期望。 – floydn
通過移動%end語句,您的宏將爲每一天生成一對proc sql和proc導出語句,但work.emaildump和Excel文件將在每次執行循環期間被覆蓋。無論您循環使用多少天,這兩個文件將只包含循環中的最後一天。除非您澄清該計劃的目的和預期結果,否則我不會再評論。 – floydn