在Proc sql sas中执行类似T-sql的while循环
我有下面的表格在Proc sql sas中执行类似T-sql的while循环,sas,Sas,我有下面的表格 work.met_table Metrics_Id Metrics_desc 1 Count_Column 2 Sum_Column 3 Eliminate_column 我想做一些事情,比如在T-sql中做while循环 select count(*) :cnt_tbl from work.met_table %let init_cnt = 1 while (&init_cnt = &c
work.met_table
Metrics_Id Metrics_desc
1 Count_Column
2 Sum_Column
3 Eliminate_column
我想做一些事情,比如在T-sql中做while循环
select count(*) :cnt_tbl from work.met_table
%let init_cnt = 1
while (&init_cnt = &cnt_tbl)
begin
select Metrics_desc into :met_nm
from work.met_table
where metrics_id = 1
Insert into some_sas_table
Select * from another table where Metrics_desc =&met_nm
/* Here I wanna loop all values in metrics table one by one */
end
%put &init_cnt = &int_cnt+1;
如何在proc-sql中实现这一点?提前感谢如果要动态生成代码,请使用SAS宏语言 但是对于您的示例,不需要动态生成代码
proc sql ;
insert into some_sas_table
select *
from another_table
where Metrics_desc in (select Metrics_desc from work.met_table)
;
quit;
您还可以执行显式传递。通过SAS发送本机t-sql代码以在数据库服务器上运行,而不是将数据带到SAS应用程序服务器进行查询 下面的示例将详细说明
您想要什么作为输出?为什么不直接将
另一个表
与met_表
连接起来呢?
PROC SQL;
CONNECT TO ODBC(DATASRC=SQLdb USER=&SYSUSERID) ;
/* Explicit PASSTHRU with SELECT */
SELECT *
FROM CONNECTION TO ODBC (
SELECT b.idnum o.[SSdatecol] AS mydate
FROM dbo.big_SS_table1 b
LEFT JOIN dbo.other_SStable o
ON b.idnum = o.memberid
WHERE o.otherdatecol >= '2014-10-06'
--This is a T-SQL comment that works inside SQL Server
) ;
;
DISCONNECT FROM ODBC ;
QUIT;