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服務器2014'。語法和功能的差異往往會影響答案。 – HABO