从组中选择最低的n值

时间:2013-09-06 22:46:16

标签: sql-server tsql greatest-n-per-group

这有点像这样的问题:

T-SQL: How to use MIN

但是我想让它返回每组最低的4个值。

谢谢

2 个答案:

答案 0 :(得分:3)

CTE使用ROW_NUMBER

WITH CTE AS(
   SELECT T.*, RN=ROW_NUMBER()OVER(PARTITION BY Col1 Order By Col2 ASC)
   FROM dbo.TableName T
)
SELECT * FROM CTE WHERE RN <= 4

Ranking Functions

答案 1 :(得分:1)

SELECT 
  ID, SomeVal
FROM (
   SELECT ID, SomeVal, row_number() over(PARTITION BY id ORDER BY SomeVal ASC) rn
   FROM [TableName]
) T
WHERE rn <= 4

这为您提供了每SomeVal个最低的前4个ID值。