我有一个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
Statement中执行宏;和SQL
命令。在数据步骤中,您可以call execute
用来执行您正在描述的事情。
%Macro Max(field, table);
proc sql;
Select MAX(&field.) From &table.;
quit;
%mend;
data _null_;
set table_associations;
call execute('%MAX('||field||','||table||')');
run;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句