SQL Server2005 から利用できるようになった「ROW_NUMBER」について実験してみました。
OVER(ORDER BY ~)で指定する列名は、テーブルに元から存在するフィールドを指定しないとエラーとなります
SELECTの列リスト内で別名を付けたとしても、OVER句内の並べ替えはその前に行われているようです
エラーになってしまう例(入社年月日、又は登録日の順に並べ替えて連番を振る)
SELECT ROW_NUMBER() OVER(ORDER BY [日付]) AS [連番] ,[従業員No] ,[姓] ,[名] ,ISNULL([入社年月日], [登録日]) AS [日付] FROM [従業員マスタ]
› メッセージ 207、レベル 16、状態 1、行 1 列名 '日付' は無効です。
今回の場合、以下のようにしてエラーを回避しました
SELECT ROW_NUMBER() OVER(ORDER BY [日付]) AS [連番] ,[従業員No] ,[姓] ,[名] ,[日付] FROM ( SELECT [従業員No] ,[姓] ,[名] ,ISNULL([入社年月日], [登録日]) AS [日付] FROM [従業員マスタ] ) AS [WORKTABLE]