1

値のあるテーブルがあります

X     Y     Z  
-     ---   - 
1     abc   P
1     def   Q

結果を次のように返すことができる通常のクエリ(pl / sqlではない)が必要です

X  Y        Z
-  -------  ---
1  abc,def  P,Q

つまり、列Xに基づいて、値はcsv形式に変換されます

3つ以上の列が存在する場合があります。

4

2 に答える 2

8

次の手法のいずれかを選択して、文字列を集約できます

場合によっては、特定の値に関連付けられたデータのリストを提供して、多数の行から 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;
于 2011-08-08T10:41:05.613 に答える
0

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 は組み込み関数です。

于 2011-08-08T10:39:46.440 に答える