我正在尝试制作一个包含每行价格的报告,我想打印每页底部打印在页面上的价格总和。至少就我的情况而言,我不觉得在每一页上打印总计是不明智的。
示例:
第一页
Name | Price1 | Price2 | Price3 | Price4 -table header
Record 1 | 10 | 15 | 15 | 20
Record 2 | 15 | 15 | 15 | 15
Total 2 records | 25 | 30 | 30 | 35 -table footer for page 1
第二页
Name | Price1 | Price2 | Price3 | Price4 -starting 2. page, table header
Record 3 | 20 | 30 | 30 | 30
Total 1 records | 20 | 30 | 30 | 30 -end of the table
Grand T. (3 rec) | 45 | 60 | 60 | 65 -end of the table
我为第一页放了2条记录,为第二页放了1条,它只是为了展示我想要的东西。我尽力让它看起来很清楚。
答案 0 :(得分:1)
我可以看到两种可能的方法。
因为你说每页有可预测的行数(比方说,为了便于构建一个例子,有25个),你可以做到以下几点:
在查询中,为每一行分配一个连续的序列号。你可以这样做:
WITH Cte
AS (
SELECT Name,
Price1,
Price2,
Price3,
Price4,
RecordNumber = Row_Number() OVER (ORDER BY [whatever])
FROM [tables]
)
SELECT Name,
Price1,
[etc]
RowGroup = Floor((RecordNumber * 1.0) / 25 )
FROM Cte
ORDER BY RecordNumber
然后,在您的报告中,按RowGroup
分组,并对您的行进行小计。
如果您在报告中有其他更高级别的分组,则可能必须在每个更高级别的组之后开始一个新页面,否则它将为页面小计停止放置。
(您可能也可以使用SSRS中的RowNumber()函数执行此操作而无需修改基础查询,但是有很多关于您可以使用哪些函数的规则,我不知道是否会被允许。)
我能想到的另一个选项更复杂,涉及使用报告代码部分和设置一些模块级功能。如果您认为这是您需要看到的东西,请告诉我。