SQL. Сравнение значения из текущей строки со значением, полученным в результате того же сравнения предыдущей строки

#sql #sql-server #tsql

#sql #sql-server #tsql

Вопрос:

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

Пример таблицы

Например:

  1. Столбец строки 2 «Заданный»> Столбец строки 5 «Результат». Следовательно, столбец строки 2 «Результат» получает то же значение в столбце строки 2 «Дано»

  2. Столбец строки 3 ‘Дано’ <Столбец строки 2 ‘Результат’. Поэтому мы сохраним значение в столбце строки 2 «Результат». То же самое со строкой 4

  3. Столбец Rpw 5 «Дано» теперь> столбец строки 4 «Результат». Поэтому мы получим значение в столбце строки 5.

Моя проблема в том, что на него нужно ссылаться в том же поле, которое еще предстоит создать. Знаете ли вы какие-либо шаги по решению этой проблемы? Спасибо!

Комментарии:

1. Я думаю, вы можете искать cte с рекурсией здесь. Ваши текущие результаты в строке зависят от значений предыдущих записей

Ответ №1:

Похоже, вы ищете что-то вроде этого:

 DECLARE @DataSource TABLE
(
    [RowID] INT
   ,[given] INT
);

INSERT INTO @DataSource ([RowID], [given])
VALUES (1, 10)
      ,(2, 15)
      ,(3, 12)
      ,(4, 14)
      ,(5, 20);

SELECT [given]
      ,MAX([given]) OVER (ORDER BY [RowID])
FROM @DataSource;
  

введите описание изображения здесь

Вы можете проверить предложение OVER, если вам может потребоваться использовать PARTITION BY или ROWS BETWEEN в вашем реальном случае.

Комментарии:

1. Большое вам спасибо за это! Изначально я пытался использовать оператор CURSOR, а также вложенный CTE, но этот лучше и быстрее!