如何从表格中选择滚动/包装*行?
我正在尝试为每天选择一些记录(每种类型,2或3),在我用完时将其包裹起来。 例如。
2018-03-15: YyBiz, ZzCo, AaPlace
2018-03-16: BbLocation, CcStreet, DdInc
这些是在Dynamics CRM的SSRS报告中呈现的,因此我可以进行简单的查询后操作。
目前我到达:
2018-03-15: YyBiz, ZzCo
2018-03-16: AaPlace, BbLocation, CcStreet
首先,为每条记录获取一个数字:
SELECT name, ROW_NUMBER() OVER (PARTITION BY type ORDER BY name) as RN
FROM table
在SSRS中,我然后调整RN以反映我需要的每种类型的数量:
OnPageNum = FLOOR((RN+num_of_type-1)/num_of_type)-1
--Shift RN to be 0-indexed.
导致AaPlace, BbLocation
和CcStreet
的PageNum为0,DdInc
为1,... YyBiz
和ZzCo
为8。
然后使用链接到数据集的SSRS表/矩阵,我将行过滤器设置为:
RowFilter = MOD(DateNum, NumPages(type)) == OnPageNum
其中DateNum基本上是自纪元以来的天数,并且每个页面都有一个单独的表格和日期传入。
此时,它每页只显示type
的N条记录,但如果某种类型的记录总数不是该类型每页记录数的倍数,那么将记录的记录少于所需的页面。
有没有更简单的方法来接近这个/下一步是什么?
*在电子游戏中找到诸如Wraparound之类的内容,无缝重置为0.
答案 0 :(得分:0)
为了达到这个效果,我发现将RowNumber
偏移-DateNum*num_of_type
(正排序为负),然后模COUNT(type)
将提供正确的"环绕&#34 ;效果。
为了达到理想的分页效果,只需按num_of_type
和floor
进行分割,如下所示:
RowFilter: FLOOR(((RN-DateNum*num_of_type) % count(type))/num_of_type) == 0