fidodidocw 发表于 2016-1-12 15:11
不知道那个文档有介绍这个方法?
我写了个macro,
- %macro var_order(lib, data, vars, out);
- data _myvar;
- k = 1;
- do while(scan("&vars", k) ne "");
- name = upcase(scan("&vars", k));
- k = k + 1;
- output;
- end;
- drop k;
- run;
- proc sql noprint;
- create table _othervars as
- select upper(name) as name
- from sashelp.vcolumn
- where upcase(libname) = upcase("&lib")
- and upcase(memname) = upcase("&data")
- and upcase(name) not in (select name from _myvar);
-
- select name into :vars separated by ","
- from (select * from _myvar union all select * from _othervars);
- quit;
- proc sql noprint;
- create table &out as
- select &vars from &lib..&data;
- quit;
- %mend;
- %var_order(lib = sashelp, data = cars, vars = origin type,
- out = cars1);
复制代码vars 参数就是你要的顺序,vars里面的按照vars里面的顺序, 剩下的变量不再vars里面的都排在后面,