Oracleで複数の値を取得して1行に結合する方法
Oracleでは、複数の値を1行に結合するにはLISTAGG関数を使用できます。
例えば従業員テーブル名はemployees、列はemployee_idとemployee_nameの2つで、すべての従業員名を1行にまとめたい場合は以下のクエリを使います。
SELECT LISTAGG(employee_name, ', ') WITHIN GROUP (ORDER BY employee_id) AS all_employee_names
FROM employees;
このクエリは、従業員のすべての名前をカンマ区切りで1行に結合し、employee_idの順に並べ替えます。結果はall_employee_namesとして返されます。
LISTAGG 関数では複数の列名を指定し、文字連結関数(CONCAT など)で結合して、複数の列の値を 1 行にまとめられます。
注意:LISTAGG関数はOracle 11g以降のバージョンで利用できます。