Я пытаюсь найти максимальное значение в столбце и сохранить одно и то же значение до тех пор, пока не будет найдено следующее максимальное значение, а затем заменит его на новый, в SQL в качестве данных лежит в MS SQL ServerПроверка максимального значения в одном столбце и замена нового найденного максимума
алгоритм был бы в основном сохранить глобальную переменную для MaxDelay и сохранить перезаписи, что с новым макс или запустить два «для циклов» один для текущей строки и другой для строки -1, пока не будет найден следующий проект.
Должен ли я использовать сочетание рекурсивного запроса и funtion в SQL? Я пробовал Lag(), но я не могу использовать Max() функции Lag() из-за ограничения оконных функций.
SELECT *,
(select max(v) from (VALUES([Delay],Lag([Delay], 1) OVER(ORDER BY [Milestones], [Project Name])))as value(v)) as [MaxDate]
FROM dbo.[Scenario Testing with Previous Row]
ошибка:
Msg 4108, Level 15, State 1, Line 2 Windowed functions can only appear in the SELECT or ORDER BY clauses.
бы признателен, если кто-то может дать мне некоторые указатели.
Project Name Milestones Baseline Date Actual Date Delay Max Delay Worst Case Date
Project 1 MS_1 12/12/2016 15/12/2016 3 3 15/12/2016
Project 1 MS_2 14/12/2016 16/12/2016 2 3 17/12/2016
Project 1 MS_3 31/12/2016 09/01/2017 9 9 09/01/2017
Project 1 MS_4 11/01/2017 12/01/2017 1 9 20/01/2017
Project 1 MS_5 21/01/2017 24/01/2017 3 9 30/01/2017
Project 1 MS_6 01/02/2017 15/02/2017 14 14 15/02/2017
Project 1 MS_7 15/02/2017 16/02/2017 1 14 01/03/2017
Project 1 MS_8 26/02/2017 26/02/2017 0 14 12/03/2017
Project 1 MS_9 31/03/2017 31/03/2017 0 14 14/04/2017
Редактировать свой вопрос и предоставить образцы данных и желаемые результаты * в вопросе * в виде текстовых таблиц. Если вы поместите 4 пробела в начале каждой строки, данные будут выровнены. –