获取最后一个值和今年的值进行比较
Posted
技术标签:
【中文标题】获取最后一个值和今年的值进行比较【英文标题】:Get last value and this years value to compare 【发布时间】: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()
来获取分区中的上一个/下一个值。
【参考方案1】:
您可以尝试使用外部自连接和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;
【讨论】:
你得到什么输出?以上是关于获取最后一个值和今年的值进行比较的主要内容,如果未能解决你的问题,请参考以下文章
html/css/js-如何利用jq来更改属性的值和获取属性的值