Получить последнее значение и значение этого года для сравнения - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть таблица на 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 голосов
/ 15 апреля 2019

Вы можете попробовать внешнее присоединение к себе вместе с 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;
...