首页 > 解决方案 > 加入当前年份的表并获取上一年的记录

问题描述

输入

表A

ID  YEAR    
101 2012
101 2013
101 2014
102 2012
102 2013
102 2014

表B

ID  YEAR    AMOUNT
101 2011    2384
101 2012    2987
101 2013    3232
101 2014    3987
102 2011    2212
102 2012    2332
102 2013    2987
102 2014    3222

输出表

ID  YEAR    AMOUNT  PREV YEAR AMOUNT
101 2012    2987    2384
101 2013    3232    2987
101 2014    3987    3232
102 2012    2332    2212
102 2013    2987    2332
102 2014    3222    2987

问题描述:TableA 将选择年份作为基数,tableB 将拥有所有记录,但我需要将 tableA 和 TableB 连接起来以连接上一年的数据,请参阅输出表。我尝试过自我加入但无法获得它。

标签: sqlsql-servertsqldatejoin

解决方案


我认为这是两个连接:

select a.*, b.amount, bprev.amount
from a left join
     b
     on b.id = a.id and b.year = a.year left join
     b bprev
     on bprev.id = a.id and bprev.year = a.year - 1;

是一个 db<>fiddle。


推荐阅读