获取最近的值和今年的值进行比较

时间:2019-04-15 08:02:14

标签: sql sql-server sql-server-2014

我在sql server 2014上有一个带有日期,值,类型和项目列的表,我想编写一个查询,该查询返回过去一年的最后一个值和当前年份的最新值,但是如果当前年份但如果有今年没有条目,它将连续返回空。 我的桌子:

Id |    date          |   value   | type |    project   
1  | 2019-01-01 |      1       |   a    | p1
2  | 2018-01-01 |      1       |   a    | p1
3  | 2018-01-01 |      1       |   b    | p1

我期望的结果:

CurrentyearDate  |  currentyearvalue   |   pastdate | pastvalue  | type | project

2019-01-01  | 1 |      2018-01-01       |   1  | a | p1   
Null  | null |      2018-01-01       |   1  | b | p1

我已经使用了ROW_NUMBER和分区方法,但是却无法实现

1 个答案:

答案 0 :(得分:0)

您可以尝试与DATEPART一起进行外部自我连接:

select t1.date as  CurrentyearDate, t1.value as currentyearvalue,
t2.date as  pastdate, t2.pastvalue as currentyearvalue ,t2.type ,t2.project   
from <<tableName>> t1 right join <<tableName>> t2
on DATEPART(MONTH, t1.lastUpdateTime)=DATEPART(MONTH, t2.lastUpdateTime)
and DATEPART(dd, t1.lastUpdateTime)=DATEPART(dd, t2.lastUpdateTime)
and DATEPART(year, t1.lastUpdateTime)=DATEPART(year, t2.lastUpdateTime)+1;