Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

T-SQL подзаявка Макс (дата) и присъединявания

Ето още един начин да го направите без подзаявки. Този метод често превъзхожда другите, така че си струва да тествате и двата метода, за да видите кой дава най-добра производителност.

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

Това ще даде множество резултати, ако имате две цени с една и съща ТОЧНА дата на цена (повечето други решения ще направят същото). Освен това няма какво да отчитам, че последната дата на цената е в бъдеще. Може да помислите за проверка за това, независимо кой метод ще използвате.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server REPLACE() срещу TRANSLATE():Какви са разликите?

  2. SQL Server използва висок процесор при търсене в nvarchar низове

  3. Риск от сблъсък на UUID, използвайки различни алгоритми

  4. Получаване на върната стойност от съхранената процедура в C#

  5. Ключова дума не се поддържа:метаданни