使用max功能而无需分组

时间:2014-12-16 17:03:39

标签: sql sql-server

我有三组信息:

  • 的productID
  • 日期
  • 卖方

我需要获取每个productID销售的最新产品的信息并通过销售。我尝试使用日期的最大值,但这也迫使我使用分组给卖家,但我不想按卖家分组。我希望按productID进行分组,获取最后一次销售的日期和人员。如何避免对卖家进行分组?

1 个答案:

答案 0 :(得分:3)

使用Window function可帮助您找到每个group(productId)

中的最新日期
SELECT ProductID,
       [date],
       seller
FROM   (SELECT Row_number()
                 OVER(
                   partition BY ProductID
                   ORDER BY [date] desc) Rn,
               *
        FROM   tablename) a
WHERE  rn = 1 

或使用也可以Max aggregate使用group by来获得结果

SELECT ProductID,
       [date],
       seller
FROM   tablename a
       JOIN (SELECT Max([date]) [date],
                    productid
             FROM   tablename
             group by productid) b
         ON a.productid = b.productid
            AND a.[date] = b.[date]