У меня есть таблица t1, как показано ниже:
-----------------------------
| date | id | value |
-----------------------------
| 2/28/2019 | 1 | 55 |
| 2/28/2019 | 2 | 44 |
| 2/28/2019 | 3 | 33 |
| 2/26/2019 | 1 | 22 |
| 2/26/2019 | 2 | 12 |
| 2/26/2019 | 3 | 11 |
-----------------------------
Я хочу взять abc3 из t1, а затем найти значение abc3 для даты - 1 день в той же таблице t1 и отобразить обе записи.
Я создал запрос как:
select
a.date, a.id, (a.value - b.value) as 'difference-from-previous-day'
FROM
t1 a
INNER JOIN
t1 b
ON
a.ID = b.ID
WHERE
b.DATE in (dateadd(day, -1, a.DATE));
И это прекрасно работает, когда все даты есть.
Но в датах есть пробелы (например, когда мы смотрим на данные за понедельник идо понедельника «выходные» - в таблице t1
нет данных за последний день -1
, поэтому этот запрос показывает NULL для понедельника) ...
Как написать запрос для получения последней датыдо текущей даты (а НЕ -1
дата), для которой существуют данные?
Ожидаемый результат:
2/28/2019 | 1 | 33 (which is "55 - 22")
2/28/2019 | 2 | 32 (which is "44 - 12")
2/28/2019 | 3 | 22 (which is "33 - 11")
Спасибо.