sql >> Databasteknik >  >> RDS >> Sqlserver

T-SQL Subquery Max(Datum) och Joins

Här är ett annat sätt att göra det utan underfrågor. Denna metod kommer ofta att överträffa andra, så det är värt att testa båda metoderna för att se vilken som ger bäst prestanda.

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

Detta kommer att ge flera resultat om du har två priser med samma EXAKTA prisdatum (de flesta andra lösningar kommer att göra detsamma). Dessutom finns det inget att ta hänsyn till att det senaste prisdatumet ligger i framtiden. Du kanske vill överväga en check för det oavsett vilken metod du slutar använda.



  1. Hur man maskerar Cassandra med IRI FieldShield

  2. Hur tar jag bort icke-avbrytande blanksteg från en kolumn i SQL-servern?

  3. Intervju med Oren Eini på RavenDB om databashantering, analys &säkerhet

  4. Entity Framework 6 - Tidsfrågor