SQL クエリで Dense_Rank を使用して、一部の列で同じデータを含む行をランク付けし、次の行で変更されたデータが見つかったときにランクを上げようとしています。私はこのクエリで成功しました:
SELECT DENSE_RANK () OVER (ORDER BY ID, Date1) AS P_Key,
*
FROM dbo.tbl_Main T
ORDER BY S_ID, ID, Date1, Date2;
しかし、ランクは順番に来るのではなく、メインのSQLに適用される順序に従って来ます。スクリプトの出力は次のとおりです。
スクリーンショットからわかるように、ID 列と Date1 列に同じデータを持つ行に同じランク (P_Key) を与えていますが、メインの Order By のためにどこでも順序がずれています。メインの「Order By」によって適用されるのと同じ順序で他の行が表示され、「P_Key」のシーケンスが1から開始され、その後順次増加するようにします。どうすればそうできますか?