値のあるテーブルがあります
X Y Z
- --- -
1 abc P
1 def Q
結果を次のように返すことができる通常のクエリ(pl / sqlではない)が必要です
X Y Z
- ------- ---
1 abc,def P,Q
つまり、列Xに基づいて、値はcsv形式に変換されます
3つ以上の列が存在する場合があります。
値のあるテーブルがあります
X Y Z
- --- -
1 abc P
1 def Q
結果を次のように返すことができる通常のクエリ(pl / sqlではない)が必要です
X Y Z
- ------- ---
1 abc,def P,Q
つまり、列Xに基づいて、値はcsv形式に変換されます
3つ以上の列が存在する場合があります。
次の手法のいずれかを選択して、文字列を集約できます
場合によっては、特定の値に関連付けられたデータのリストを提供して、多数の行から 1 つの行にデータを集約する必要があります。例として SCOTT.EMP テーブルを使用すると、部門ごとに従業員のリストを取得できます。以下は、基本データのリストと、集計クエリから返したい出力のタイプです。
Base Data: DEPTNO ENAME ---------- ---------- 20 SMITH 30 ALLEN 30 WARD 20 JONES 30 MARTIN 30 BLAKE 10 CLARK 20 SCOTT 10 KING 30 TURNER 20 ADAMS 30 JAMES 20 FORD 10 MILLER Desired Output: DEPTNO EMPLOYEES ---------- -------------------------------------------------- 10 CLARK,KING,MILLER 20 SMITH,FORD,ADAMS,SCOTT,JONES 30 ALLEN,BLAKE,MARTIN,TURNER,JAMES,WARD
個人的には、この構文は非常に読みやすいと思います
SELECT x, wm_concat(y), wm_concat(z)
FROM xyz
GROUP BY x;
Postgreの場合、次のようなものを使用できます
select X, array_to_string(array_accum(Y), ',') as Y, array_to_string(array_accum(Z), ',') as Z
from Table
group by X
array_to_string と array_accum は組み込み関数です。