根据月

时间:2018-04-10 06:52:41

标签: mysql sql sql-server

我的表中有4列(ID,计数器,月份,年份)

我的任务是计算当前月份的计数器与特定ID的上个月的计数器之间的差异

例如:

ID    Counter     Month      Year 
1      57688       12        2017
1      89895        1        2018
2      35792        1        2018
3      12234        2        2018

现在,如果我想找到具有相同ID的两行之间的差异(就像前两行一样) 89895(Jan)-57688(dec)= 32207将是结果

请记住从2018年1月到2017年12月的变化情况

我该怎么做这个任务

1 个答案:

答案 0 :(得分:1)

假设你有SQL Server,你的问题就不清楚了。

declare @sampleData table(id int, [counter] int, [month] int, [year] int)

insert into @sampleData values 
(1, 57688, 12, 2017),
(1, 89895, 1, 2018),
(2, 35792, 1, 2018),
(2, 12234, 3, 2018);

select 
    id, [counter], [month], [year], 
    lag([counter],1,0) over (partition by id order by [year] asc, [month] asc) as previousCounter 
from 
    @sampleData

您可以使用laglead函数获得之前或之后的结果。您可以在https://docs.microsoft.com/en-us/sql/t-sql/functions/lead-transact-sql

查看文档