異なるテーブルの列を1つの結果に結合できるかどうか疑問に思います。
Table A:
ID ColA ColB
1 A B
Table B:
ID ColC ColD ColE
1 C1 D1 E1
1 C2 D2 E2
Table C:
ID ColF ColG
1 F G
期待される結果:
ID ColA ColB ColC ColD ColE ColF ColG
1 A B C1 D1 E1 F G
1 C2 D2 E2
異なるテーブルの列を1つに結合する方法はありますか?
前もって感謝します。
私の「単純な」解決策はfull outer join
、しかし、2番目の行にあるギャップを与えないでしょう(TableAには1つの行しか含まれていないため)。
したがって、これを解決するには、もう少し複雑にして、各テーブルのIDごとに数値を生成します。次に、これらの副選択のそれぞれで完全外部結合を作成し、その生成された行番号を結合の2番目のフィールドとして使用できます。そうすれば、デカルト積を取得できず、行が欠落しているためのギャップがあり、描画したときに結果が得られます。
テスト用のデータベースが手元にありませんが、機能するかどうか教えてください。
select
coalesce(A.ID, B.ID, C.ID) as ID,
A.ColA, A.ColB, B.ColC, B.ColD, B.ColE, C.ColF, C.ColG
from
(select
ID,
row_number() over (partition by ID order by ColA) as rownumber,
ColA,
ColB
from
TableA t) A
full outer join
(select
ID,
row_number() over (partition by ID order by ColC) as rownumber,
ColC,
ColD,
ColE
from
TableB t) B on B.ID = A.ID and B.rownumer = A.rownumber
full outer join
(select
ID,
row_number() over (partition by ID order by ColF) as rownumber,
ColF,
ColG
from
TableC t) C on C.ID = nvl(A.ID, B.ID) and C.rownumer = A.rownumber
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加