Axi*_*xus 5 sql-server grouping fetch offset
如果我有一个如下的一对多表:
FamilyId UserId
1 1
1 2
2 3
2 4
3 5
Run Code Online (Sandbox Code Playgroud)
我可以offset/fetch用来获取一组行。但是我怎样才能用它来获得一组家庭呢?我怎样才能fetch例如,前两个家庭使用(在这种情况下,共4行返回)offset/fetch?
正如评论中提到的,您需要创建row number不同的familyid然后用于offset/fetch过滤组。
然后join将过滤后的组返回主表以获取userid's过滤后的组中的
SELECT a.familyid,
userid
FROM yourtable a
JOIN (SELECT Row_number()OVER(ORDER BY familyid)rn,
familyid
FROM (SELECT DISTINCT FamilyId
FROM yourtable)b
ORDER BY rn OFFSET 0 ROWS FETCH NEXT 2 ROWS ONLY
) c
ON a.FamilyId = c.FamilyId
Run Code Online (Sandbox Code Playgroud)
注意:这将从sql server 2012+