我在视图中有这个查询,因为引用的表t我无法索引。我已经转换为一个不起作用的子查询,无论如何都是一个较慢的smidgen。
我只需要买一个productid的最后价格。
SELECT op.productId, op.Price, o.createdat
from (
SELECT max(op.OrderProductid), MAX(o.OrderId)
FROM dbo.OrderProduct op
INNER JOIN dbo.Order so ON op.OrderId = so.OrderId
WHERE o.StatusId IN (1,2,3)
GROUP BY op.ProductId
) t
join OrderProduct op on op.Productid = t.Productid
join Order o ON o.OrderId = op.OrderId
答案 0 :(得分:1)
考虑你的上一次陈述:
我只需要买一个productid的最后价格。
您可以使用row_number
:
select *
from (
select op.productid, op.price, o.createdat,
row_number() over (partition by op.productid order by o.orderid desc) rn
from orderproduct op
join order o on op.orderid = o.orderid
) t
where rn = 1