MSSQL Datum mit kleinster Differenz finden

ratze79

Mitglied
Hallo zusammen,

ich habe eine Tabelle mit Rechnungsdaten und eine Historientabelle mit Preisänderungen.
Ich möchte jetzt zu einem Rechnungsdatum den zur der Zeit aktuellen Preis finden.

Bsp:
Rechnungsdatum 11.12.2009

Preishistorie:
Datum/Preis
26.11.2009/1,50€
01.11.2009/1,40€
01.12.2009/1,60€

Ich möchte jetzt den Datensatz rausbekommen der kleiner als mein Rechnungsdatum ist und die minimale Differenz (in Tagen) besitzt. Wäre dann also der 26.11.2009

Kann mir jemand einen Tip geben?
Danke schon mal im Voraus

Gruß
Ratze
 
Wäre dann also der 26.11.2009

sicher?
nicht der 1.12.2009?

Würde folgendes nicht den Zweck erfüllen?
SQL:
SELECT * FROM table WHERE Datum < Rechnungsdatum ORDER BY Datum LIMIT 1

Kann sein, dass du beim ORDER BY noch ASC oder DESC angeben musst.
Aber dann solltest du genau einen Datensatz erhalten.

mfg
bo
 
Zuletzt bearbeitet von einem Moderator:
Hallo bergonline,

danke für deine schnelle Antwort. Theoretisch funktioniert das, allerdings habe ich ja eine vielzahl von Artikeln. So würde ich ja nur einen Datensatz als Ergebnis bekommen.

Gruß Ratze
 
ratze79 hat gesagt.:
Ich möchte jetzt den Datensatz rausbekommen der kleiner als mein Rechnungsdatum ist und die minimale Differenz (in Tagen) besitzt. Wäre dann also der 26.11.2009

Theoretisch funktioniert das, allerdings habe ich ja eine vielzahl von Artikeln. So würde ich ja nur einen Datensatz als Ergebnis bekommen.

So hast du es aber be/ge-schrieben.
Dann benutze ein Sub-Query.

Von "Artikel" hast d nichts geschrieben.

bo
 
Hallo bergonline,

ist vielleicht nicht so glücklich formuliert. Also ich habe eine Vielzahl von Rechnungsdatensätzen in denen steht die Artikelnr,Lieferant,Rechnungsnummer,Lieferdatum,Preis,Menge...

und die Historientabelle mit Artikelnr,Lieferant,Änderungsdatum,Preis.....

Ich möchte für jeden Artikel aus der Rechnungstabelle den zugehörigen historischen Preis raussuchen, also Änderungsdatum < Lieferdatum und Datediff(dd, änderungsdatum,Lieferdatum) = min

Ich hoffe so ist es verständlicher?!

Gruß
Ratze
 
Zurück