2017-01-20 2 views
0

열의 최대 값을 찾고 다음 최대 값이 발견 될 때까지 동일한 값을 유지하려고합니다. 데이터와 SQL의 새로운 하나, 는 MS SQL 서버에있다동일한 열의 반복적 인 최대 값 확인 및 새로 발견 된 최대 값으로 바꾸기

알고리즘 것 기본적으로 MaxDelay에 대한 전역 변수를 유지하고 새 최대에 있음을 다시 작성 유지하거나 현재 행에 대해 하나의 '루프'두 가지를 실행하고 행에 대해 다른 수 -1 다음 프로젝트가 발견 될 때까지 -1.

SQL에서 재귀 쿼리와 기능을 혼합해서 사용해야합니까? Lag()을 시도했지만 Window 기능 제한으로 인해 Lag()의 Max()를 사용할 수 없습니다.

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 
+0

질문을 편집하고 질문 *에서 질문 *을 텍스트 테이블로 제공하십시오. 각 행의 시작 부분에 4 개의 공백을 넣으면 데이터가 정렬됩니다. –

답변

3

누적 최대 값을 보려면 적절한 함수를 사용하십시오. 이 같은 것 :

+0

와우! 도움이되었다. 감사. –