2016-04-30 31 views
0

私はプロジェクトに取り組んでおり、何か助けが必要です。質問をうまくフレーム化するために、私はサンプルデータと所望の結果フォーマットを作成しました。私は3列のテーブルを持っています。 3つの行はすべて重複したデータを持つことができますが、CodeA、CodeB、CodeCの組み合わせは一意です。私は右の次の形式でコンマ区切りのデータを生成することができるように(ストアドプロシージャではない)Oracle SQLクエリを持つ必要があります。コンマで区切られた行の値は、区別する必要があります。また、フィールド1はソート順である必要があります。2つのSQLクエリの結果を結合するには?

enter image description here

私が作成したクエリは、ここにあるが、以下の問題は、これが私のDISTINCT値を取得されていないだけということです。たとえば、出力セットの1行目では、 A1 B1、B1、B2、B3 C1、C1、C2、C2 が欲しいものです。誰か助けてくれますか?

SELECT CodeA As "Field 1", 
LISTAGG(CodeB, ',') WITHIN GROUP (ORDER BY CodeA) AS "Field 2", 
LISTAGG(CodeC, ',') WITHIN GROUP (ORDER BY CodeA) AS "Field 3" 
FROM Table 
GROUP BY CodeA 
UNION 
SELECT CodeB As "Field 1", 
LISTAGG(CodeA , ',') WITHIN GROUP (ORDER BY CodeB) AS "Field 2", 
LISTAGG(Code3, ',') WITHIN GROUP (ORDER BY CodeB) AS "Field 3" 
FROM Table 
GROUP BY CodeB; 

答えて

0

試してみてください。

select x.codea, x.codeb, y.codec 
from 
(
    select codea, listagg(codeb,',') within group (order by codeb) as codeb 
    from (select distinct codea, codeb from tbl) 
    group by codea 
) x 
join 
(
    select codea, listagg(codec,',') within group (order by codec) as codec 
    from (select distinct codea, codec from tbl) 
    group by codea 
) y 
    on x.codea = y.codea 
関連する問題