我有表Product
和表Sales
我Product
表我有主键prodId
的产品列表,在Sales
表中我有该产品的总销售额。
我希望通过将Product
表的最新记录(使用Sales
列)加入表SalesDate
来获取数据。
Sales
表可能包含0到n个特定产品的记录。
我知道我可以使用子查询来完成它,但由于性能开销,我需要避免使用子查询。我也不想使用max
函数,因为它需要我在组中提到很多f列。
我可以通过简单的连接来完成吗?
答案 0 :(得分:2)
使用ROW_NUMBER功能。像这样
;with cte
as
(
select
SeqNo = ROW_NUMBER() OVER(PARTITION BY ProductId ORDER BY SalesDate DESC),
*
FROM Sales
)
SELECT
*
FROM Product p
LEFT JOIN cte
ON p.ProducId = cte.ProductId AND cte.SeqNo = 1