sql server - 按组别排列前x行
问题描述:
我有一个问题,我浪费太多时间玩。它可以简化为这样的:sql server - 按组别排列前x行
- 平台:SQL服务器
- 你有与年龄,邮政编码
- 名单表中的前5名最老的人在每个邮编
我可以看到如何用光标做到这一点,但是有没有一种方法可以实现这一目标?
所有输入都赞赏!
答
SELECT *
FROM (
SELECT *
,ROW_NUMBER() OVER (PARTITION BY zipcode ORDER BY Age DESC) rn
FROM TableName
)A
WHERE RN <= 5
答
您需要使用ROW_NUMBER解析函数
SELECT *
FROM
(SELECT name,
age,
zipcode,
ROW_NUMBER() OVER
(PARTITION by zipcode
order by age desc)
as seq
) T
Where T.seq <=5