Tengo una tabla que contiene los precios de muchas "cosas" diferentes en una tabla MS SQL 2005. Hay cientos de registros por artículo por día y las diferentes cosas reciben actualizaciones de precios en diferentes momentos.Consulta SQL para obtener el último precio
ID uniqueidentifier not null,
ThingID int NOT NULL,
PriceDateTime datetime NOT NULL,
Price decimal(18,4) NOT NULL
Necesito obtener los últimos precios de hoy para un grupo de cosas. La consulta siguiente funciona, pero estoy recuperando cientos de filas y tengo que recorrerlas y extraer solo la última por ThingID. ¿Cómo puedo (por ejemplo, a través de un GRUPO POR) decir que quiero la última por ThingID? ¿O tendré que usar subconsultas?
SELECT *
FROM Thing
WHERE ThingID IN (1,2,3,4,5,6)
AND PriceDate > cast(convert(varchar(20), getdate(), 106) as DateTime)
ACTUALIZACIÓN: En un intento de ocultar la complejidad puse la columna ID en un int. En la vida real es GUID (y no el tipo secuencial). He actualizado la tabla def arriba para usar uniqueidentifier.
@BlaM: Desafortunadamente, el ID es un GUID y no un Int. (Que no podrías saber en ese momento). Lo siento. – Marius