用第二张表的最新记录加入第一张表

时间:2017-12-07 11:09:49

标签: sql-server

我有表Product和表Sales

Product表我有主键prodId的产品列表,在Sales表中我有该产品的总销售额。

我希望通过将Product表的最新记录(使用Sales列)加入表SalesDate来获取数据。

Sales表可能包含0到n个特定产品的记录。

我知道我可以使用子查询来完成它,但由于性能开销,我需要避免使用子查询。我也不想使用max函数,因为它需要我在组中提到很多f列。

我可以通过简单的连接来完成吗?

1 个答案:

答案 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