2016-07-04 5 views
-1

ich zwei Fragen habenUNION ohne eine der Spalten vergleichen

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

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

Ich möchte eine Vereinigung der beiden Abfragen tun (keine Duplikate), aber nicht Spalte D zu vergleichen, das ist, wenn Spalten AB und C die sind Dann werden sie unabhängig von D als Duplikate betrachtet. Ich möchte nicht aus den verknüpften Tabellen T1, T2 und T3 auswählen. Ist dies auf einer einzigen Aussage möglich? (dies ist Oracle)

+0

Aber wollen Sie Wert von D zeigen? – vercelli

+0

Fügen Sie einige Beispieltabellendaten und das erwartete Ergebnis hinzu. – jarlh

+2

Wenn 2 Zeilen A, B, C gleich sind, welchen Wert von D benötigen Sie? –

Antwort

2

Verwenden UNION und GROUP BY, dies zu tun, wie folgt;)

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 

Und Sie müssen angeben, welche D Wert mögen Sie erhalten, wenn A, B, C gleich sind, hier sind nehme an, du bekommst max (D), so;

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 

Egal, die Sie reservieren möchten schätzen, wenn Sie group by in Oracle verwenden, können Sie nur Spalten, die in group by oder einige andere Spalten mit Aggregationsfunktionen erscheinen wählen.

Verwandte Themen