函数介绍
看用SAS怎么实现吧,就是这么一个小小的宏,就实现了所谓其他数据库都不能实现的功能,
%macro decode /PARMBUFF;
%local i count ifn valuen countall currfeild valueelse;
%let countall=%sysfunc(countw(&SYSPBUFF,%quote(,)));
%let count=%eva l((&countall-1)/2);
%let currfeild=%scan(%quote(&SYSPBUFF),1);
case &currfeild
%do i=1 %to &count;
%let ifn=%scan(%quote(&SYSPBUFF),%eva l(&i*2));
%let valuen=%scan(%quote(&SYSPBUFF),%eva l(&i*2+1));
when &ifn then &valuen
%end;
%if %eva l(&countall>(&count+1)) %then %do;
%let valueelse=%scan(%quote(&SYSPBUFF),&countall);
else &valueelse
%end;
end
%mend;
调用代码如下,和oracle的调用方式和功能实现基本上都是一样的
proc sql;
create table test as
select
%decode(sex,"男",0,"女",1,2)
as abc
from sashelp.class;
quit;