Oracleの結果セットを連結して表示する方法は何ですか?
Oracleでは、LISTAGG関数を使用して、結果セットの複数行データを1つの文字列に結合することができます。
以下が例です。
SELECT dept_name, LISTAGG(employee_name, ', ') WITHIN GROUP (ORDER BY employee_name) AS employees
FROM employees
GROUP BY dept_name;
この例では、employeesテーブルにはdept_nameとemployee_nameの2つの列が含まれています。LISTAGG関数を使用して、それぞれの部署の従業員名をコンマで区切られた文字列に結合し、従業員名のアルファベット順に並べ替えます。
結果は以下の出力と類似しています。
DEPT_NAME | EMPLOYEES
---------------------------------
HR | John Doe, Mary Smith
IT | Alice Johnson, Bob Thompson, Sam Lee
LISTAGG関数内で、WITHIN GROUP (ORDER BY employee_name)を使用すると、employee_name列でソートされます。必要に応じて異なる列をソートするか、ソートを行わないように選択できます。
Oracle 11g以降で利用可能なLISTAGG関数に注意してください。Oracleの古いバージョンを使用している場合、結果セットを連結して表示するために他の方法、例えばループや結合演算子を使用する必要があるかもしれません。