sql >> Base de Datos >  >> RDS >> Sqlserver

Subconsulta T-SQL Max (fecha) y uniones

Aquí hay otra forma de hacerlo sin subconsultas. Este método a menudo superará a los demás, por lo que vale la pena probar ambos métodos para ver cuál ofrece el mejor rendimiento.

SELECT
     PRT.PartID,
     PRT.PartNumber,
     PRT.Description,
     PRC1.Price,
     PRC1.PriceDate
FROM
     MyParts PRT
LEFT OUTER JOIN MyPrices PRC1 ON
     PRC1.PartID = PRT.PartID
LEFT OUTER JOIN MyPrices PRC2 ON
     PRC2.PartID = PRC1.PartID AND
     PRC2.PriceDate > PRC1.PriceDate
WHERE
     PRC2.PartID IS NULL

Esto dará múltiples resultados si tiene dos precios con la misma fecha de precio EXACTA (la mayoría de las otras soluciones harán lo mismo). Además, no hay nada que justifique que la fecha del último precio sea en el futuro. Es posible que desee considerar un cheque para eso, independientemente del método que termine usando.