WHERE 句での ROW_NUMBER() 関数の使用: ウィンドウ関数の制限の克服
ROW_NUMBER() などのウィンドウ関数により、強力なデータが可能になります結果セット内の変換。ただし、その使用には特定の制約があり、その 1 つは WHERE 句からの除外です。
ユーザーが遭遇したクエリに示されているように、WHERE 句で ROW_NUMBER() を使用しようとすると、エラー メッセージ: 「ウィンドウ関数は SELECT 句または ORDER BY 句でのみ使用できます。」
この制限に対処するための手法は次のとおりです。元のクエリを Common Table Expression (CTE) でラップし、CTE クエリ内にウィンドウ関数を含めることができるようにする方法を採用します。
このソリューションを実装する方法は次のとおりです。
修正されたクエリは次のようになります。
WITH MyCte AS ( SELECT employee_id, RowNum = ROW_NUMBER() OVER (ORDER BY employee_id) FROM V_EMPLOYEE ORDER BY Employee_ID ) SELECT employee_id FROM MyCte WHERE RowNum > 0
元のクエリを CTE でラップすることにより、ウィンドウ関数 ROW_NUMBER() WHERE 句で利用できるようになり、その値に基づいて結果をフィルタリングできるようになりました。
以上がWHERE 句で ROW_NUMBER() を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。