【发布时间】:2019-04-15 08:02:13
【问题描述】:
我在 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 和分区方法,但还是不行
【问题讨论】:
-
您使用的是哪个 dbms(mysql、postgresql、tsql / mssql、oracle)?请标记您的问题。
-
@SebastianBrosch Sql server 2014
-
您可以使用
LEAD或LAG和OVER()来获取分区中的上一个/下一个值。
标签: sql sql-server sql-server-2014