2016-04-19 14 views
0

複数の列のチェックに基づいて複数の行を1つに結合したいと考えています。 enter image description here複数列のチェックのための出力行の結合

残りの列がすべて一致する場合のみ、Program_Typeはコンマで区切られてマージされます。

私はlistaggを使ってみましたが、達成できませんでした。私もconnect byを使ってみましたが、まだすべての条件をチェックすることはできませんでした。

同じヘルプ。

よろしくお願いいたします。

答えて

1

この

select 
listagg(PROGRAM_TYPE,',') 
within group (order by PROGRAM_TYPE DESC) as PROG_GROUP 
from emp 

のような出力:さらに

XYZ,MNO 

あなたは、単一のクエリ

With PROGRAM1_TYPE 
as (
select distinct id,prog_type 
from 
(
select id,listagg(PROGRAM_TYPE,',') within group (order by PROGRAM_TYPE DESC) 
over (partition by id) prog_type 
from emp 
) 
)select distinct e.id,e.name,prog_type PROGRAM_TYPE, 
e.MNAME,e.type --add remaining columns here 
from PROGRAM1_TYPE p,emp e 
where p.id=e.id 

O/P -Screenshot

のすべての列を持つようにしたい場合は

enter image description here

+0

あなたの助けをありがとう – user2854333

0

あなたがちょうどあなたが簡単に同じである必要があり、列のいずれかによって、いくつかの手順で

  1. ソートこれを行うことができ、その後簡素化する必要がある1つのまたは二つの大きなテーブルを持っている場合(例えばID) 。
  2. 余分な列には、行3 - IF(AND(A3 = A4、B3 = B4)、 "同じ"、"最終")。
  3. 別の列に、行が同じ場合にプログラムの種類を連結する式を追加します。値が正しく設定されたら、コピーして2つの列に「結果を貼り付ける」ことができます(したがって、方程式ではない値を持つようになります)
  4. 最後の/同じ列に
  5. ソート、「最後」の行を維持し、あなたがこれを繰り返し行う必要がある場合、これは面倒なソリューションであり、あなたはおそらく使用すべき当然の「同じ」

を破棄マクロまたはデータベースプログラムである。

+0

こんにちは。私はpl/SQLを使用してそれを完了するために探していた – user2854333

関連する問題