Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Использование данных в столбце за предыдущий период  [new]
Bonddage
Member

Откуда:
Сообщений: 5
Здравствуйте добрые люди.
Подскажите пожалуйста.
Есть данные 3х столбцов dt, A1, B2
Как написать запрос:
Если dt >= '01.11.2017' , то в качестве данных по А1 использовать данные по А1 только за январь 2017 года?

Написал:
SELECT IIF dt, (t1.dt >= '01.11.2017', t2.A1, t1.A1) as A1, B2
FROM table as t1
LEFT JOIN ( SELECT dt, A1
FROM table
WHERE dt between @bdt and @edt ) as t2 ON t1.dt = t2.dt
В ноябре как раз меняет значение А1 , но только на null. В принципе понятно почему. Но не понятно как надо чтобы брались январские значения?
11 дек 17, 11:58    [21023553]     Ответить | Цитировать Сообщить модератору
 Re: Использование данных в столбце за предыдущий период  [new]
Cammomile
Member

Откуда:
Сообщений: 1212
А количество строк за ноябрь и январь у тебя всегда одно и тоже?!
11 дек 17, 12:02    [21023570]     Ответить | Цитировать Сообщить модератору
 Re: Использование данных в столбце за предыдущий период  [new]
Bonddage
Member

Откуда:
Сообщений: 5
Cammomile,

извини забыл написать.
Допустим да, одно и то же.
каждый день , каждый час , т.е.:
01.11.2017 00:00:00
01.11.2017 01:00:00
01.11.2017 02:00:00
......
01.11.2017 22:00:00
01.11.2017 23:00:00
02.11.2017 00:00:00
02.11.2017 01:00:00
.....

Ноябрь конечно может не лучший пример. Можно где количество дней одинаковое.
суть в том что берутся значения за тот же день за тот же час только с января
11 дек 17, 12:12    [21023615]     Ответить | Цитировать Сообщить модератору
 Re: Использование данных в столбце за предыдущий период  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7383
Bonddage,

Два запроса через union all.
11 дек 17, 12:14    [21023621]     Ответить | Цитировать Сообщить модератору
 Re: Использование данных в столбце за предыдущий период  [new]
Добрый Э - Эх
Guest
Bonddage,

а когда понадобятся "значения за тот же день за тот же час только с" февраля, как действовать будешь для 29, 30 и 31 числа?
11 дек 17, 12:22    [21023651]     Ответить | Цитировать Сообщить модератору
 Re: Использование данных в столбце за предыдущий период  [new]
Cammomile
Member

Откуда:
Сообщений: 1212
Лаг постоянной или такая специфика только для Января - Ноября?
11 дек 17, 12:30    [21023691]     Ответить | Цитировать Сообщить модератору
 Re: Использование данных в столбце за предыдущий период  [new]
Bonddage
Member

Откуда:
Сообщений: 5
Cammomile,

постоянный.
11 дек 17, 14:12    [21024084]     Ответить | Цитировать Сообщить модератору
 Re: Использование данных в столбце за предыдущий период  [new]
Bonddage
Member

Откуда:
Сообщений: 5
Добрый Э - Эх,
Только январь)
Конечно самое идеальное это просто брать значения год назад
но хотелось бы с месяцами тоже понять
11 дек 17, 14:13    [21024090]     Ответить | Цитировать Сообщить модератору
 Re: Использование данных в столбце за предыдущий период  [new]
Cammomile
Member

Откуда:
Сообщений: 1212
Так какая логика с 29 февраля и 30-31 в обычных месяцах?
Или тебя устроит просто "30 календарных дней назад"?
11 дек 17, 15:18    [21024334]     Ответить | Цитировать Сообщить модератору
 Re: Использование данных в столбце за предыдущий период  [new]
Bonddage
Member

Откуда:
Сообщений: 5
Cammomile,

минус год
для 29 февраля за 2012 год
12 дек 17, 07:25    [21025683]     Ответить | Цитировать Сообщить модератору
 Re: Использование данных в столбце за предыдущий период  [new]
Cammomile
Member

Откуда:
Сообщений: 1212
Ну значит готовь отдельный набор данных, где примаплены текущие данные к тем, которые идут с лагом.

Если у тебя, к примеру, записи имеют сквозную нумерацию, можно от текущего ИД отнимать N, где N - число записей в год.

Если ты за это поручиться не можешь, то надо как-то по датам отдельно начитывать. Но ключевое тут, конечно же, отдельное отношение, на которое ты будешь джойниться.
12 дек 17, 10:18    [21026028]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить