我在这个查询的另一个问题的答案中,在PerformanceDBA的声明中提出这个问题:
SELECT ProductId,
Description
FROM Product p,
ProductStatus ps
WHERE p.ProductId = ps.ProductId -- Join
AND StatusCode = 2 -- Request
AND DateTime = ( -- Current Status on the left ...
SELECT MAX(DateTime) -- Current Status row for outer Product
FROM ProductStatus ps_inner
WHERE p.ProductId = ps_inner.ProductId
)
Run Code Online (Sandbox Code Playgroud)
使用ProductStatus表只保存状态随时间变化的有效(开始)日期,将超过此查询:
SELECT ProductId,
Description
FROM Product p,
ProductStatus ps
WHERE p.ProductId = ps.ProductId -- Join
AND StatusCode = 2 -- Request
AND getdate() BETWEEN DateFrom AND Dateto …Run Code Online (Sandbox Code Playgroud)