取出每个分类的TOP 10
最近很多同事问类似问题,如何取出每个分类的TOP 10,现提供一种比较方便的方法,供大家参考。
示例数据库:AdventureWorks
比如:取出每个商品分类中最近发布的10条记录
1
SELECT * FROM
2
(
3
4
SELECT ROW_NUMBER() OVER (PARTITION BY ProductSubcategoryID ORDER BY ModifiedDate DESC) AS RowNumber,ProductID,Name,ProductSubcategoryID,ModifiedDate
5
FROM Production.Product WHERE ProductSubcategoryID IS NOT NULL
6
7
) T
8
WHERE RowNumber<=10
9
SELECT * FROM 2
(3

4
SELECT ROW_NUMBER() OVER (PARTITION BY ProductSubcategoryID ORDER BY ModifiedDate DESC) AS RowNumber,ProductID,Name,ProductSubcategoryID,ModifiedDate 5
FROM Production.Product WHERE ProductSubcategoryID IS NOT NULL6
7
) T8
WHERE RowNumber<=109

这里主要是通过 ROW_NUMBER 创建一个条件出来。
大家有好的方法,也希望提供出来让大家学习学习。
浙公网安备 33010602011771号