Предыдущее и следующее значения
Что если нужно сдвинуть значения в столбце на одну строку вверх или вниз? Для этого используется тот же подход, что и в предыдущем упражнении, но с двумя новыми функциями: LEAD() — для следующего значения, и LAG() — для предыдущего. Порядок действий следующий:
- Сначала создайте разделы
- Затем упорядочьте данные по нужному столбцу
- После этого примените функции
LEAD()и/илиLAG()в соответствии с задачей
Это упражнение является частью курса
Средний уровень SQL Server
Инструкции к упражнению
- Напишите T-SQL-запрос, который для каждой территории:
- Сдвигает значения в столбце
OrderDateна одну строку вниз. Назовите этот столбецPreviousOrder. - Сдвигает значения в столбце
OrderDateна одну строку вверх. Назовите этот столбецNextOrder. Для этого потребуется использовать PARTITION BY по территории
- Сдвигает значения в столбце
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
SELECT TerritoryName, OrderDate,
-- Specify the previous OrderDate in the window
___(OrderDate)
-- Over the window, partition by territory & order by order date
___(___ BY ___ ___ BY ___) AS PreviousOrder,
-- Specify the next OrderDate in the window
___(OrderDate)
-- Create the partitions and arrange the rows
___ AS NextOrder
FROM Orders