habe ich eine Tabelle, wie untenSQL: Mit Top-1 in UNION-Abfrage mit Sortierung nach
Rate Effective_Date
---- --------------
5.6 02/02/2009
5.8 05/01/2009
5.4 06/01/2009
5.8 12/01/2009
6.0 03/15/2009
soll ich die alle Preise finden, die für das aktuelle Datum wirksam sind und danach. So, um den aktuellen effektiven Zinssatz zu bekommen, ich benutze
SELECT TOP 1 * from table
where effective_date < '05/05/2009'
order by effective date desc
für die Preise nach dem aktuellen Datum der Abfrage
SELECT * from table
where effective_date > '05/05/2009'
Um diese beiden Ergebnisse kombinieren i verwenden, um eine Vereinigung als
SELECT TOP 1 * from table
where effective_date < '05/05/2009'
order by effective date desc
UNION
SELECT * from table
where effective_date > '05/05/2009'
Das erwartete Ergebnis ist
Rate Effective Date
---- --------------
5.8 05/01/2009
5.4 06/01/2009
5.8 12/01/2009
6.0 03/15/2009
Aber ich habe das tatsächliche Ergebnis wie
Rate Effective Date
---- --------------
5.6 02/02/2009
5.4 06/01/2009
5.8 12/01/2009
6.0 03/15/2009
Ich habe keine Ahnung, warum dies geschieht? Irgendwelche Vorschläge?
Ich bin nicht sicher, dass Ihre "erwarteten" Ergebnisse tatsächlich die Ergebnisse sind, die Sie erwarten sollten. 3/15/2009 ist der "vorletzte" "aktuellste vorherige" Datensatz vor Ihrem Suchdatum von '5/5/2009 '.. Sie sollten nur 3 Datensätze in Ihrer erwarteten Ergebnismenge erhalten. – datacop