Welche
DB verwendest Du.
Mit valid_since könnte man sowas machen:
Select ID, max(valid_since) from mytable group by ID
Dieses Statement setzt Du in Klammern statt der Originaltabelle ein.
Das ist erstmal ok, je nach
DB kann man andere Konstrukte verwenden, die dann idealerweise schneller sind.
Wenn Du den Spielraum hast, würde ich über eine kleine Erweiterung dieser Mechanik nachdenken.
Valid_since zu valid_from machen
ggf. valid_to hinzufügen, was andere Abfragen erlaubt, die ohne Max oder ähnliche Aggregate auskommen.
Denkbar ist der Vortrag von Preisen, die dann irgendwann automatisch greifen, ..