我在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和分区方法,但是却无法实现
答案 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;