如何在没有SAS排序的情况下通过变量拉出最后一次观察?有谁知道如何使用SQL查询来实现这一目标。我理解的方法是使用SAS中的last.variable,但不能对表进行排序以获得所需的结果。谢谢。
答案 0 :(得分:1)
更新以便在澄清后更好地回答问题
如果您的交易数据集没有日期,但需要获取每个ID的最新交易,您可以创建一个计数器,以便您查找最近的交易。
ID
2
1
4
1
2
2
4
第1步:使用sum statement 为每笔交易创建一个计数器
data have2(compress=yes); /* Dataset is compressed due to size */
set have;
transaction_nbr+1;
run;
这将产生:
ID transaction_nbr
2 1
1 2
4 3
1 4
2 5
2 6
4 7
第2步:从新数据集中选择最大交易数
proc sql noprint;
create table want as
select ID, transaction_nbr
from have2
where transaction_nbr in(select max(transaction_nbr) from have2 group by ID)
order by ID;
quit;
您的数据集现在应该包含每个ID的最新事务:
ID transaction_nbr
1 4
2 6
4 7
在这里,您将一步到位。因为您创建了自己的计数器,所以where
语句中的子查询将保证所选的事务是最新的事务。