【发布时间】:2020-07-22 04:14:27
【问题描述】:
我有学生为每个课程支付的费用数据,现在我想显示未支付的费用,因为学生可能有 2018 年、2019 年和 2020 年的未支付费用待处理,因此它将有 3 行(月份将在列中)。现在由于学生是相同的,我将在前端合并记录,现在如果我考虑分页并且每页限制为 10,并且在这 10 条记录中,3 条记录属于同一学生(因为年份不同),在这种情况下,我最终将在给定页面上只有 7 条记录。
这是示例数据。
Studentname RollNo Year Program Jan Feb Mar Apr May Jun ...
abc 1 2018 p1 200 50 10 30 88 29
abc 1 2019 p1 100 10 20 50 12 22
abc 1 2020 p1 30 77 33 27 99 100
xyz 2 2020 p2 88 29 32 99 199 200
我该如何管理上述案例的分页。
【问题讨论】:
-
“俱乐部数据”听起来像是一种不友善的行为,如果不是非法的话。我猜你打算合并这些行,例如通过对每列的值求和。如果您从 10 行开始,并将单个用户 3 年的数据合并到一行中,那么您将显示 8 行而不是 7 行。 (对于您的示例数据,您将有 2 行,而不是 1 行。)对吗?您可以使用 CTE 或
view到group by Studentname,然后选择数据页。性能可能是个问题。如果您按字母顺序列出它们,那么根据页面上的第一个和最后一个Studentname进行分页可能会很有用。 -
是的,你是对的 8 行而不是 7 行,但我不想每年汇总,我想提一下(当年)每个月有多少待处理。我将在每一行中都有一个带有列表的网格视图,其中将显示 [月(年)] 以及它们各自的数量。
-
好的,这是有道理的,不应该破坏任何数据。您通过每页显示
PageSize学生的数据来有效地进行分页。以这种方式接近它,并使用费用数据inner join来收集页面所需的所有行。
标签: sql-server tsql pagination