根据输入数据集使用SAS生成SQL代码

时间:2019-12-30 17:13:44

标签: sql sas macros sas-macro

我希望能够使用SAS编写并运行一个SQL查询,其中一个case语句由另一个数据集中的观察值确定。

我对SAS宏还很陌生,但是我已经读过有关使用'PUT'语句将代码写入另一个SAS文件的信息。但是,我还没有做好这项工作,我将非常感谢您提供一些指导,以指导这是否是实现以下目标的最佳方法。

如果我想要的最终数据集来自sashelp.class,则SQL case语句将由“输入”数据集中的观察值确定:

data input;
   input year_group age;
   datalines;
6 11
7 12
8 13
;

我想生成以下SQL代码,根据“输入”中的观察次数动态更改case语句,然后运行它。我已将&age和&year_group用作“宏”变量,以指示这些变量将从“输入”数据集中提取:

Proc sql;
Create table output as (
Select
Name
,case
When age=&age then &year_group
Else 'no input'
End as year_group

From sashelp.class

Where year_group ne 'no input'
);
Quit;

例如,如果上述“输入”数据集中有2个观察值,则case语句将变为:

,case
When age=11 then 6
When age=12 then 7
Else 'no input'
End as year_group

如果有3个观察结果,则案例陈述将变为:

,case
When age=11 then 6
When age=12 then 7
When age=13 then 8
Else 'no input'
End as year_group

以此类推。

0 个答案:

没有答案