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
だろうが、私は、パラメータとして3のオフに基づいて
2016-06-01
2016-06-04
2016-06-07
になるためにそれらを必要とするでしょう。任意のヘルプ
それはあなたが実際にあなたの元データ、処理ルールと所望の出力を達成するために何をしようとしているのですか?あなたが解決策の途中にいるように見えて、完了方法を今聞いていますが、まったく異なる解決策が望ましいかのように見えます。 – iamdave
適切なソフトウェア(MySQL、Oracle、DB2など)とバージョンの両方でデータベースの質問にタグを付けると便利です。 'sql-server-2014'です。構文と機能の相違は、しばしば答えに影響します。 – HABO