0

我正在尝试制作一份报告,其中包含每行的一些价格,我想在每一页的底部打印价格的总和 - 这些价格打印在页面上。至少在我的情况下,我认为在每一页中打印总计并不明智。

例子:

第一页

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 条记录,这只是为了展示我想要的。我尽力让它看起来清楚。

4

1 回答 1

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() 函数来执行此操作,而无需修改基础查询,但是关于何时可以使用哪些函数有很多规则,我不知道是否允许这样做。 )

我能想到的另一个选项更复杂,涉及使用报告代码部分和设置一些模块级函数。如果您认为这是您需要看到的,请告诉我。

于 2012-10-16T12:03:25.213 回答