我需要把上一年的记录和本年的记录一起拿到
输入
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
2条答案
按热度按时间8yoxcaq71#
如果每一年的重复次数相同,则可以使用滞后函数:-
使用下面的db<>fiddle
Create Table:-
```create table yourtable(id int, year numeric(10), amount numeric(10));
insert into yourtable
select 1001 , 2012 , 3747 union all
select 1001 , 2012 , 3747 union all
select 1002 , 2013 , 5746 union all
select 1002 , 2013 , 5746 union all
select 1003 , 2014 , 6756 union all
select 1003 , 2014 , 6756 union all
select 1004 , 2015 , 8746;
`Fetch Data:-`
select *,LAG(amount,2) OVER(order by year) as PrevAmount from yourtable ;
yftpprvb2#
如果我理解正确,你可以用
apply
:通常,会有
order by
与select top
,但这似乎对您的数据没有影响。