SQL-Abfrage zu erhalten spätesten Preis

Ich habe eine Tabelle mit Preisen für viele andere "Dinge" in eine MS SQL 2005-Tabelle. Es gibt Hunderte von Datensätzen pro Sache pro Tag und die anderen Dinge bekommt Preis-updates zu unterschiedlichen Zeiten.

ID uniqueidentifier not null,
ThingID int NOT NULL,
PriceDateTime datetime NOT NULL,
Price decimal(18,4) NOT NULL

Ich brauche, um die heute aktuellen Preise für eine Gruppe von Dingen. Die folgenden Abfrage funktioniert, aber ich bin immer Hunderte von Zeilen zurück und ich muss die Schleife durch Sie und nur extrahieren Sie die neueste pro ThingID. Wie kann ich (z.B. über eine GRUPPE VON) sagen, ich möchte die neueste pro ThingID? Oder muss ich Unterabfragen?

SELECT * 
FROM Thing
WHERE ThingID IN (1,2,3,4,5,6)
  AND PriceDate > cast( convert(varchar(20), getdate(), 106) as DateTime) 

UPDATE: In einem Versuch zu verbergen die Komplexität lege ich die Spalte " ID " in einen int. Im realen Leben ist es GUID (und nicht die sequenzielle Art). Ich habe aktualisiert die Tabelle def oben zu verwenden, vom Datentyp uniqueidentifier.

Leider die ID ist eine GUID und nicht ein Int. (Was Sie nicht wissen konnte zu der Zeit). Sorry.

InformationsquelleAutor Marius | 2008-09-08

Schreibe einen Kommentar