WHERE 句の ROW_NUMBER() 関数の使用中にエラーが発生しました
WHERE 句内での ROW_NUMBER() 関数の使用法に関して質問が発生しました句。あるユーザーが次のクエリを試行中に、「ウィンドウ関数は SELECT または ORDER BY 句でのみ使用できます」というエラーが発生しました:
SELECT employee_id FROM v_employee WHERE ROW_NUMBER() OVER (ORDER BY employee_id) > 0 ORDER BY employee_id
解決策: ウィンドウ関数を使用したラッパー CTE
このエラーを解決するには、ウィンドウ化されたテーブルをカプセル化する Common Table Expression (CTE) を作成する一般的な手法が必要です。関数の計算。元のクエリを CTE でラップすることにより、後続のクエリはウィンドウ関数の結果にアクセスし、それを WHERE 句で利用できます。
このソリューションを実装する修正されたクエリは次のようになります。
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
この方法を採用すると、ウィンドウ関数の出力を WHERE 句で使用できるようになり、ユーザーは希望の条件に基づいて結果を適切にフィルタリングできるようになります。
以上がWHERE 句で ROW_NUMBER() を使用できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。