MW211 EXIT

devlog
MSSQL/更新時のROW_NUMBER()
2018年12月21日
┌──────────────────────────────────────┐
│UPDATE [表]                                                                 │
│    SET [列] = ROW_NUMBER() OVER(PARTITION BY [集団]                        │
│                                 ORDER BY [順] ASC);                        │
└──────────────────────────────────────┘
上記のように直接使うと以下エラーとなる。
  ┌────────────────────────────────────┐
  │メッセージ 4108、レベル 15、状態 1、行 3                                │
  │ウィンドウ関数は、SELECT 句または ORDER BY 句だけで使用できます。       │
  └────────────────────────────────────┘
この場合、下記のように間接的に使えばよい。
┌──────────────────────────────────────┐
│UPDATE [表]                                                                 │
│    SET [列] = [入力D].[列]                                                │
│    FROM [表] AS [出力D]                                                   │
│        INNER JOIN (                                                        │
│            SELECT [主キー],                                                │
│                   ROW_NUMBER() OVER(PARTITION BY [集団]                    │
│                                     ORDER BY [順] ASC)  AS [列]            │
│                FROM [表]                                                   │
│        ) AS [入力D]                                                       │
│          ON [入力D].[主キー] = [出力D].[主キー];                         │
└──────────────────────────────────────┘
分類:MSSQL