Запрос SQL Server для получения предварительной позиции Нет - PullRequest
0 голосов
/ 25 сентября 2019

Я пытаюсь написать запрос SQL, который будет отображать в новом столбце «номер предварительной позиции» со значениями, отображаемыми на основе значения в предыдущей строке столбца с номером позиции.

See image for more details

Буду признателен за любую помощь.Спасибо.

Ответы [ 3 ]

1 голос
/ 25 сентября 2019

Вы, похоже, ищете LAG ().Чтобы это работало, вам нужен столбец, который можно использовать для упорядочения данных, чтобы ваша СУБД могла определить, какая запись является предыдущей записью для текущей.Предполагая, что этот столбец называется id, тогда:

SELECT
    id,
    position_nr,
    LAG(position_nr) OVER(ORDER BY id) pre_position_nr
FROM mytable
0 голосов
/ 25 сентября 2019

Вы хотите использовать LAG().Чтобы получить 0, используйте форму с тремя аргументами:

SELECT position_no,
       LAG(position_no, 1, 0) OVER (ORDER BY position_no) as pre_position_no
FROM mytable;

Предполагается, что вы делаете заказ на position_no, как подсказывает ваш пример кода.

0 голосов
/ 25 сентября 2019

Попробуйте использовать функцию LAG ():

LAG (scalar_expression [,offset] [,default])  
OVER ( [ partition_by_clause ] order_by_clause )  

https://docs.microsoft.com/en-us/sql/t-sql/functions/lag-transact-sql?view=sql-server-2017

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...