2017-09-14 1 views
1

Ich habe Zweifel in Oracle SQl, ich muss den frühesten Datensatz basierend auf Datumsbereichen auswählen. Ich habe Tabelle A mitWählen Sie den frühesten Datensatz Datum

NAME.A SHOPNO YEAR.A shop key 
XX   123 2013  1 
YY   345 2013  2 

Ich habe Tabelle b mit zwei Spalten.

SHOPNO  NUMBER.B NAME.B INSERT_DATE.B 
    1   987  ZZ  7/13/2013 
    2   456  ZZ  12/1/2013 

sollte Meine resultierende Ausgabe

sein
NAME.A SHOPNO YEAR.A NUMBER.B NAME.B 
XX   123 2013  987  ZZ 

Bitte lassen Sie mich wissen, wie es in Oracle SQL

erreicht werden kann
+0

Bitte formatieren Sie die Daten in Ihrer Frage so, dass sie lesbar sind. – OldProgrammer

+0

Was meinst du mit NAME.A? Punkte sind in Spaltennamen in Oracle nicht erlaubt. Wenn Sie Ihre tatsächlichen Spaltennamen in etwas Generisches ändern, ist das OK, aber Sie müssen immer noch den Syntaxregeln folgen. Dann: Was meinst du mit "früheste Aufzeichnung ** basierend auf Datumsbereichen **"? Welche "Datumsbereiche"? Was meinst du mit "basierend auf" solchen Bereichen? – mathguy

+0

Ich habe Zweifel in Oracle SQl, ich muss den frühesten Datensatz basierend auf Datumsbereichen auswählen. Ich habe Tabelle A mit NAME_A SHOPNO YEAR_A Shop-Taste XX 123 2013 1 YY 345 2013 2 Ich habe Tabelle b mit zwei Spalten. SHOPNO NUMBER.B NAME.B INSERT_DATE_B 1 987 ZZ 7/13/2013 2 456 ZZ 12/1/2013 Meine resultierende Ausgabe sollte NAME sein.A SHOPNO YEAR.A NUMBER.B NAME.B XX 123 2013 987 ZZ Bitte lassen Sie mich wissen, wie es in Oracle sql erreicht werden kann – NEWBEE

Antwort

0

Siehe this answer from a duplicate question für eine effizientere Lösung mit Rang(). Aber hier ist die grundlegende/einfache Art zu tun, was Sie wollen.

select a.name, a.shopno, a.year, b.number, b.name 
from a 
join b on a.shopno = b.shopno 
    and b.insert_date = (select min(insert_date) from b b2 
         where b2.shopno = b.shopno); 
+0

Vielen Dank, – NEWBEE

Verwandte Themen