我希望对分组数据进行分页,但我的限制是每页只能显示有限数量的行(而不是结果)。
例如,每页 20 行将显示一组或多组结果。每组将包括:
- 包含组标题的行
- 组中每个结果的一行
如果组中的结果跨越多个页面,则“组标题”行将在后续页面上重复。
到目前为止,我能够以union
这样一种方式对结果和组标题进行排序,使它们形成一个我可以轻松分页的行表。
select * from (
select f.Id, f.Name, p.Id As ProviderId, 2 as RowType,
'Result' as RowTypeTitle
from Fund f
inner join Provider p on f.ProviderId = p.Id
union
select distinct f2.ProviderId as Id, p2.Name, f2.ProviderId, 1 as RowType,
'Group Title' as RowTypeTitle
from Fund f2
inner join Provider p2 on f2.ProviderId = p2.Id
) u
order by u.ProviderId, u.RowType asc
我在上面的 SQL 中缺少的是重复的“组标题”行,例如我需要每页只返回 20 个“行”。我如何能够重构 SQL 以合并这些?