OracleのSQLで特定の行を最後に配置する方法は何ですか?
Oracleでは、ORDER BY句を使用して結果セットを並べ替えることができます。特定の行を最後に配置したい場合は、ORDER BY句内でCASE文を使用して条件を判断できます。
例えば、”employees”というテーブルに、”employee_id”という列があるとします。employee_idが100の行を最後に移動したい場合はどうすればよいでしょうか。
SELECT *
FROM employees
ORDER BY (CASE WHEN employee_id = 100 THEN 1 ELSE 0 END), employee_id;
このクエリはまずCASE文の条件判定結果に従ってソートされ、employee_idが100の場合は1を返し、それ以外の場合は0を返します。その後、employee_idでソートされます。これにより、employee_idが100の行が最後に配置されます。
特定の行を複数末尾に置きたい場合は、追加のWHEN条件を追加することで実現できます。