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の古いバージョンを使用している場合、結果セットを連結して表示するために他の方法、例えばループや結合演算子を使用する必要があるかもしれません。

bannerAds