0

次のテーブルの更新スクリプトを書きたいと思います。

Id        int,
Title     nvarchar(100),
ProgramId int,
EventId   int,
SortOrder int

SortOrder列で並べ替えて、列を1からNに設定したいIdProgramIdただし、またはのいずれかが変更されたときに番号を再起動したいEventIdProgramIdつまり、同じand値を持つ各行の番号付けシーケンス 1...N が必要です。次に、次のand値EventIdの番号付けを再開します。ProgramIdEventId

現在の並べ替えに基づいて行番号を取得するために使用できることはわかってROW_NUMBERいますが、他の 2 つの列のいずれかが変更されたときに番号を再開する方法がわかりません。これは可能ですか?

4

1 に答える 1

2

このような:

;WITH cte As
(
    SELECT *,
        ROW_NUMBER() OVER (PARTITION BY ProgramId, EventId ORDER BY Id) As RN
    FROM   YourTable
)
UPDATE  cte
SET     SortOrder = RN
于 2013-04-30T06:16:27.103 に答える