获取最后一个值和今年的值进行比较

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 您可以使用LEADLAGOVER() 来获取分区中的上一个/下一个值。 【参考方案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来更改属性的值和获取属性的值

选择排序算法讲解

选择排序算法讲解

封装两个js从url获取相关参数的值和设置前端页面的Cookie和获取Cookie的值

什么是ABA问题

jquery获得option的值和对option进行操作