#sql #sql-server #tsql
#sql #sql-server #tsql
Вопрос:
Я пытаюсь создать скрипт, который сравнивал бы и получал более высокое значение из текущей строки по сравнению со значением, полученным в результате того же сравнения предыдущей строки.
Например:
-
Столбец строки 2 «Заданный»> Столбец строки 5 «Результат». Следовательно, столбец строки 2 «Результат» получает то же значение в столбце строки 2 «Дано»
-
Столбец строки 3 ‘Дано’ <Столбец строки 2 ‘Результат’. Поэтому мы сохраним значение в столбце строки 2 «Результат». То же самое со строкой 4
-
Столбец 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, но этот лучше и быстрее!