0
매개 변수를 사용하여 마지막 행 번호의 날짜를보고 임시 테이블의 날짜를 업데이트하려고합니다.매개 변수 및 마지막 행 날짜를 기준으로 임시 테이블의 날짜를 업데이트하십시오.
DECLARE @multiDayCourseDaysBetween INT = 3;
CREATE TABLE #Courses(TempId INT IDENTITY(1,1)
, [Date] DATE
, CourseTypeId INT
, OrganisationId INT
, Reference VARCHAR(100)
, CreatedByUserId INT
, CourseTypeCategoryId INT
, TrainersRequired INT);
CREATE TABLE #TempDates(TempId INT
, [Date] DATE
, LagDate DATE);
INSERT INTO #Courses([Date])
Values('2016-06-01')
INSERT INTO #Courses([Date])
Values('2016-06-02')
INSERT INTO #Courses([Date])
Values('2016-06-03')
INSERT INTO #TempDates(tempId, [date], LagDate)
SELECT TempId, [Date]
, LAG(c.[Date],1) OVER (ORDER BY [Date]) as LagDate
FROM #Courses c
UPDATE #TempDates
SET [Date] = DATEADD(dd, @multiDayCourseDaysBetween, LAG([Date],1) OVER (ORDER BY [Date]))
WHERE LagDate IS NOT NULL
그러나 '윈도우 함수는 SELECT 또는 ORDER BY 절에만 나타날 수 있습니다.'라는 오류 메시지가 나타납니다.
예를 들어 원래 날짜
2016-06-01
2016-06-02
2016-06-03
것 그러나 나는
2016-06-01
2016-06-04
2016-06-07
매개 변수로 3 기반으로되기 위해 그들을 필요합니다.
그것은 당신이 실제로 소스 데이터, 처리 규칙 및 원하는 출력을 달성하기 위해 노력하고있다은 무엇입니까? 솔루션의 중간 단계에 있고 지금은 완료 방법을 묻는 중입니다. 반면 완전히 다른 솔루션이 더 바람직 할 것으로 보입니다. – iamdave
적절한 소프트웨어 (MySQL, Oracle, DB2 등)와 버전으로 데이터베이스 질문에 태그를 지정하는 것이 좋습니다. 'sql-server-2014'. 구문과 기능의 차이가 종종 답변에 영향을 미칩니다. – HABO