2017-06-29 2 views
0

hoffe, dass ich den Titel oben etwas Sinn macht ...Oracle Join: alle Werte aus Tabelle 2 für Duplikate Werte in der Tabelle immer 1

So habe ich eine Tabelle mit einigen doppelten drin:

Key 

100 
100 
100 
101 
102 
102 
103 

und eine zweite Tabelle mit nicht-Nachschlüssel und eine entsprechende Anzeige:

Key  Indicator 

100  Y 
101  N 
102  Y 
103  N 

Wie würde ich ein so trete, dass ich eine Rückkehr der Tabelle 1 der doppelte Schlüssel und die entsprechende Anzeige bekommen? So dass ...

Key  Indicator 

100   Y 
100   Y 
100   Y 
101   N 
102   Y 
102   Y 
103   N 

Egal wie ich mich anmelde ich weiterhin Duplikate.

+0

Sie 'wählen \ Gruppe von columns' –

+0

I don verbindet distinct' oder' wählen Spalten aus Tabellen verwenden können 'ich verstehe nicht. Ist die letzte Tabelle in deinem Beitrag das * gewünschte * Ergebnis, oder ist das etwas, was du bekommen kannst, aber es ist nicht was du willst? Wenn ja, was ** willst du? – mathguy

+0

Expliziter SELECT SELECT distinct tab1.key, tab2.Indicator FROM tabelle1 tab1 INNER JOIN tabelle2 tab2 ON tab2.key = tab1.key' oder 'SELECT tab1.key, tab2.Indicator FROM tabelle1 tab1 INNER JOIN tabelle2 tab2 ON tab2. key = tab1.key GROUP BY tab1.key, tab2.Indicator', hoffe das hilft. –

Antwort

0

Ok also, wenn letzte Tabelle das gewünschte Ergebnis ist, dann ein einfaches JOIN den Trick zu tun hat:

SELECT tab1.key, tab2.Indicator 
FROM table1 tab1 
INNER JOIN table2 tab2 ON tab2.key = tab1.key 

dass also für jeden key in table1, die eine Übereinstimmung in table2, die Zeile aus table1 hat, wird mit indicator der übereinstimmenden key in table2 vorgelegt werden. Als nächstes stelle ich es mit den Daten, die Sie ursprünglich gepostet:

select tab1.key, tab2.indicator 
from (
     select 100 as key from dual 
     union all 
     select 100 as key from dual 
     union all 
     select 100 as key from dual 
     union all 
     select 101 as key from dual 
     union all 
     select 102 as key from dual 
     union all 
     select 102 as key from dual 
     union all 
     select 103 as key from dual) tab1 
inner join ( select 100 as key, 'Y' as indicator from dual 
       union all 
       select 101 as key, 'N' as indicator from dual 
       union all 
       select 102 as key, 'Y' as indicator from dual 
       union all 
       select 103 as key, 'N' as indicator from dual 
      ) tab2 on tab2.key = tab1.key; 

mit wie:

KEY INDICATOR 
--- --------- 
100 Y 
100 Y 
100 Y 
101 N 
102 Y 
102 Y 
103 N 
Verwandte Themen