2016-07-04 8 views
-1

のいずれかを比較することなく、私は2つのクエリUNION列

select A, B, C, D from T1, T2 

select A, B, C, D from T2, T3 

私は2つのクエリ(重複なし)が、列Dを比較していないのUNIONをしたいを持つ列ABとCがある場合、それはあります同じであればDに関係なく重複と見なされます。私は結合テーブルT1、T2、およびT3から選択したくありません。これは単一のステートメントで可能ですか? 次のように、これを行うには

+0

しかし、Dの値を表示しますか? – vercelli

+0

サンプルテーブルのデータと予想される結果を追加します。 – jarlh

+2

2行A、B、Cと同じ場合、Dのどの値が必要ですか? –

答えて

2

使用UNIONGROUP BY(これは、Oracleである);)

select A, B, C 
from(
    select A, B, C, D from T1, T2 
    union 
    select A, B, C, D from T2, T3 
)t 
group by A, B, C 

そして、あなたは、私はここに、あなたはA, B, Cが同じである場合を取得したいですどのD値を指定する必要がありますこのようにmax(D)を得ると仮定します。

select A, B, C, max(D) as D 
from(
    select A, B, C, D from T1, T2 
    union 
    select A, B, C, D from T2, T3 
)t 
group by A, B, C 

あなたはOracleでgroup byを使用する場合、予約する値に関係なく、あなただけのgroup byに表示されるか、集計機能を持ついくつかの他の列の列を選択することができます。