【发布时间】:2015-07-27 11:48:31
【问题描述】:
情况:
我有一个表 mytable 有两列:tablename 和 tablefield:
|-----------|------------|
| tablename | tablefield |
|-----------|------------|
| table1 | id |
| table2 | date |
| table3 | etc |
|-----------|------------|
我的核心目标基本上是,为每个这些表名创建一个Select,显示其对应表字段的MAX()值。
Proc SQL;
Select MAX(id) From table1;
Select MAX(date) From table2;
Select MAX(etc) From table3;
Quit;
ps:解决方案必须从表中拉取数据,因此无论表的值是否发生变化,解决方案都会对其进行更改。
我尝试过的:
根据我的大部分尝试,这是最复杂的,我相信最接近解决方案:
proc sql;
create table table_associations (
memname varchar(255), dt_name varchar(255)
);
Insert Into table_associations
values ("table1", "id")
values ("table2", "date")
values ("table3", "etc");
quit;
%Macro Max(field, table);
Select MAX(&field.) From &table.;
%mend;
proc sql;
Select table, field, (%Max(field,table))
From LIB.table_associations
quit;
创建宏,我的意图很明确,但对于这个例子,我应该解决 2 个问题:
- 在
SQL语句中执行宏;并且 - 使宏将其字符串值参数理解为
SQL命令。
【问题讨论】: