通过Variable拉出最后一次观察

时间:2015-09-21 20:28:35

标签: sql sas

如何在没有SAS排序的情况下通过变量拉出最后一次观察?有谁知道如何使用SQL查询来实现这一目标。我理解的方法是使用SAS中的last.variable,但不能对表进行排序以获得所需的结果。谢谢。

1 个答案:

答案 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语句中的子查询将保证所选的事务是最新的事务。