在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;