Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / JOIN по вчерашней дате / 3 сообщений из 3, страница 1 из 1
07.04.2020, 03:27
    #39944454
voodoos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JOIN по вчерашней дате
Есть таблица с полем типа data и несколько полей типа int.

Мне необходимо в select приджоинить эту же таблицу с записями на день раньше и вывести разницу в int полях.

Делаю вот так:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT 
[This].[Date] as [Date], 
[This].[Tested] as [Tested],
[This].[Tested] - [Yester].[Tested] as [Tested Range],
[This].[Infected] as [Infected], 
[This].[Infected] - [Yester].[Infected] as [Infected Range], 
[Yester].[Cured] as [Cured yester],
[This].[Cured] - [Yester].[Cured] as [Cured Range],
[This].[Died] as [Died],
[This].[Died] - [Yester].[Died] as [Died Range]
FROM [Day] as [This]
LEFT JOIN [day] as [Yester] on [Yester].[Date] = dateadd(day, -1, [This].[Date])



Но в полях с разницей почему-то 0. Если к выборке добавить еще и выборку поля с датой приджоиной записи, вот так: [Yester].[Date] as [Yester Date], то выбирается правильная дата — дата на день раньше, а вот если добавить еще и выборку какого-нибудь числового поля из приджоиной записи, например вот так: [Yester].[Infected] as [Yester Infected], то там почему-то значение то же, что и в первичной записи, т.е. такое же, как и в [This].[Infected] as [Infected].

Почему так?
...
Рейтинг: 0 / 0
07.04.2020, 08:09
    #39944465
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JOIN по вчерашней дате
voodoos,

Воспользуйтесь функцией LAG и не придумывайте себе грабли.
...
Рейтинг: 0 / 0
07.04.2020, 12:31
    #39944528
voodoos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JOIN по вчерашней дате
a_voronin
voodoos,

Воспользуйтесь функцией LAG и не придумывайте себе грабли.


Даже не знал про эту функцию. Все получилось. Спасибо!
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / JOIN по вчерашней дате / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]