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

Откуда:
Сообщений: 75
Коллеги помогите , чтото я подвис
есть табличка с полями а,б,с, д1,д2
д1 и д2 даты
как запросом без группировки проставить
д2 следующее значение д1 отсортированное по возрастанию
например
д1 д2
01.01.2017 03.02.2017
03.02.2017 01.04.2017
01.04.2017 31.12.3999
31.12.3999 null


таблица большая хочется красиво без связывание самой себя и группировки
4 авг 17, 16:12    [20701428]     Ответить | Цитировать Сообщить модератору
 Re: Запрос - след мин.значение по дате  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
egor_s
Коллеги помогите , чтото я подвис
есть табличка с полями а,б,с, д1,д2
д1 и д2 даты
как запросом без группировки проставить
д2 следующее значение д1 отсортированное по возрастанию
например
д1 д2
01.01.2017 03.02.2017
03.02.2017 01.04.2017
01.04.2017 31.12.3999
31.12.3999 null


таблица большая хочется красиво без связывание самой себя и группировки

Если версия сервера позволяет, то LAG
4 авг 17, 16:16    [20701450]     Ответить | Цитировать Сообщить модератору
 Re: Запрос - след мин.значение по дате  [new]
egor_s
Member

Откуда:
Сообщений: 75
Minamoto, спасибо
точно LAG
классно получилось

SELECT
a1.skladID,
a1.dat,
a1.tcode,
a1.ost,
a1.sumost,
LAG (dat, 1, '39991101') OVER

( PARTITION BY a1.skladID,a1.dat,a1.tcode,a1.ost,a1.sumost ORDER BY dat) maxDatePeriod
FROM ostatok_sum_sklad a1 WITH (NOLOCK, INDEX (ostatok_sum_sklad$maxdat$siv$idx))
WHERE a1.maxDatePeriod = '39991101'
4 авг 17, 17:38    [20701727]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить