2017-11-09 2 views
-4

ich drei Tabellen, dieIch brauche die perfekte beitreten

Tabelle A

TIME_EFFECTIVE   DESCRIPTION ID DATAVAL 
1998/01/11 12:00:00 AM DescA   1  1 
1998/01/11 12:00:00 AM DescA   2  2 
1998/01/11 12:00:00 AM DescB   1  3 
1998/01/11 11:00:00 AM DescA   2  4 

Tabelle B

HOUR      DESCRIPTION ID OSO 
1998/01/11 12:00:00 AM DescA   1  10 
1998/01/11 12:00:00 AM DescA   2  34 
1998/01/11 12:00:00 AM DescB   1  12 
1998/01/11 11:00:00 AM DescA   2  40 

Tabelle C

012 wie folgt aussehen

Und ich dies möchte ... für alle TIME_EFFECTIVE nach einem bestimmten Datum ...

Die resultierende Tabelle

TIME_EFFECTIVE   DESCRIPTION ID DATAVAL OSO CVAL VVAL 
1998/01/11 12:00:00 AM DescA   1  1   10 12  1 
1998/01/11 12:00:00 AM DescA   2  2   34 12  1 
1998/01/11 12:00:00 AM DescB   1  3   12 34  2 
1998/01/11 11:00:00 AM DescA   2  4   40 12  1 

Ein Datensatz pro TIME_EFFECTIVE, Beschreibung und ID. Keine Duplikate dieser drei Felder kombiniert.

Was ist meine perfekte ORACLE SQL Join Funktion ???

PS Meine resultierende Tabelle sollte nicht mehr Zeilen als Tabelle A haben

+0

Hinweis: 'FULL OUTER JOIN'. –

Antwort

3

Sie einige

JOIN verwenden sollten
select a.TIME_EFFECTIVE, a.DESCRIPTION, a.ID, a.DATAVAL, b.OSO, c.CVAL, c.VVAL 
    from table_a a 
    inner join table_b b on a.TIME_EFFECTIVE = b.HOUR 
     and a.DESCRIPTION = b.DESCRIPTION 
      and a.ID = b.ID 
    inner join table_c on c.DESCRIPTION = a.DESCRIPTION 
3

Haben Sie INNER JOIN versucht?

Auch wenn Sie Ihre resultierende Tabelle betrachten, scheint es nicht zu passen. Sollte nicht VVAL für DescB1 sein? Wenn nicht, dann gibt es einen Schritt fehlt ...

3

Es gibt ein kleines Problem mit VVAL in Tabelle C, Zeile ('DescB', 34, 1) Ihre Ausgabe fordert eine 2, aber in der Tabelle ist es 1. Wenn dies 2 ist erhalten Sie die gewünschte Ausgabe.

SELECT A.* 
     ,B.OSO 
     ,C.CVAL 
     ,C.VVAL 
    FROM A INNER JOIN B ON A.TIME_EFFECTIVE = B.HOUR AND A.DESCRIPTION = B.DESCRIPTION AND A.ID = B.ID 
      INNER JOIN C ON A.DESCRIPTION = C.DESCRIPTION 

Gibt Ausgang:

TIME_EFFECTIVE   DESCRIPTION ID   DATAVAL  OSO   CVAL  VVAL 
----------------------- ----------- ----------- ----------- ----------- ----------- ----------- 
1998-01-11 00:00:00.000 DescA  1   1   10   12   1 
1998-01-11 00:00:00.000 DescA  2   2   34   12   1 
1998-01-11 00:00:00.000 DescB  1   3   12   34   2 
1998-01-11 11:00:00.000 DescA  2   4   40   12   1