Ich möchte nur die Zeile auswählen, in der das Eingabedatum zwischen dem Beg_Datum und Enddatum liegt. Da es jedoch mehrere Zeilen gibt, in denen dies der Fall sein kann, möchte ich das maximale Enddatum angeben sind mehrere Zeilen. Mit den folgenden Informationen möchte ich, dass die erste Zeile nur ausgewählt wird, obwohl das Datum zwischen dem Datum und dem Enddatum der zweiten Zeile liegt.Verwenden von nvl und max zum Suchen eindeutiger Werte
Zusätzlich, wenn ich die Max Funktion verwende, kann ich am Ende den Nullwert auswählen und eine grp_id wird nicht zurückgegeben, da das Enddatum Null ist. Ich werde wahrscheinlich die nvl Funktion irgendwo verwenden müssen, aber nicht sicher wo.
Customer_Nbr: 20080909
Datum: 25-Jun-95
Customer_Nbr Grp_Id Beg_Date End_Date
12345689 9 21-MAY-95 24-FEB-97
12345689 9 21-MAY-95 24-FEB-96
12345689 9 27-JUN-04 null
Bisher funktioniert das einen Nicht-Null end_date Wert zu erhalten.
SELECT grp_id
FROM table1
WHERE customer_nbr = '12345689'
AND to_date('06/27/2004','MM/DD/YYYY')
BETWEEN beg_date AND nvl(end_date,to_date('12/31/9999','MM/DD/YYYY'));