首页 > 解决方案 > 在 SQL Server 中获取上一年的记录

问题描述

我需要获取上一年的记录和当年的记录

输入

id      year    amount  
----------------------
1001    2012    3747    
1001    2012    3747    
1002    2013    5746    
1002    2013    5746    
1003    2014    6756    
1003    2014    6756    
1004    2015    8746

期望输出:

id      year    amount  prevAmount
----------------------------------
1001    2012    3747    null
1001    2012    3747    null
1002    2013    5746    3747
1002    2013    5746    3747
1003    2014    6756    5746
1003    2014    6756    5746
1004    2015    8746    6756

标签: sqltsqlsql-server-2016

解决方案


如果我理解正确,您可以使用apply

select t.*, tprev.amount
from t outer apply
     (select top (1) tprev.*
      from t tprev
      where tprev.year = t.year - 1
     );

通常,会有一个order bywith select top,但它似乎对您的数据没有影响。


推荐阅读