在前面的几个章节中,我们介绍了查询语句的基本用法,这一节,我们介绍查询语句语句中的排序和分组。
排序
如果我们希望将查询结果展现在窗口中,或者输出至外部文件以供他人查看,那么有可能会涉及到对查询结果的排序。PROC SQL 使用 ORDER BY
子句进行排序。PROC SQL 的排序非常灵活,支持单个变量或多个变量的组合排序,支持根据表达式的结果排序,甚至支持根据‘匿名变量’的结果进行排序。
例1:
/*单变量排序*/
proc sql;
select * from sashelp.class order by name;
quit;
/*多变量组合排序*/
proc sql;
select * from sashelp.class order by age, name;
quit;
基于多变量的排序时,PROC SQL 根据排序变量出现的先后顺序,先排第一个变量,若某些观测的第一个变量的值相同,则依据第二个变量的值进行排序,以此类推。
可以在变量后面指定排序方向,ASC
表示正序,DESC
表示倒序,如果没有指定排序方向,则默认为正序排列。
例2:
proc sql;
select
USUBJID,
AESEQ,
AETERM,
AESTDTC
from AE order by input(AESTDTC, yymmdd10.), USUBJID, AESEQ;
quit;
这个例子对不良事件按照发生日期从早到晚进行排序,由于原始的发生日期是字符型的,因此使用了一个表达式先将字符型的日期转换为数值型的日期,然后基于该转换结果进行排序。
例3:
proc sql;
select
USUBJID,
AESEQ,
AETERM,
AESTDTC,
input(AESTDTC, yymmdd10.) format = yymmdd10.
from AE order by 4, USUBJID, AESEQ;
quit;
这个例子与前一个例子的作用相同,不同之处在于,这里在对字符型日期进行转换之后,并没有给转换后的数值型日期指定一个变量名,为了使得输出结果可以按照不良事件的发生日期进行排序,这里的 ORDER BY 语句指定了查询结果的第 4 列变量进行排序,也就是数值型日期所在的变量。
标签:变量,proc,SQL,006,子句,排序,PROC,select,USUBJID From: https://www.cnblogs.com/snoopy1866/p/17649817.html