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 つのレコード、2 番目のページに 1 つのレコードを配置しました。すっきり見えるように頑張りました。

4

1 に答える 1

1

これを行うには 2 つの方法が考えられます。

ページごとに予測可能な行数があると言うので (たとえば、例を簡単に作成するために 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() 関数を使用してこれを行うこともできますが、どの関数をいつ使用できるかについて多くの規則があり、それが許可されるかどうかはわかりません。 )

私が考えることができるもう 1 つのオプションは、より複雑で、レポート コード セクションを使用し、いくつかのモジュール レベル関数を設定することです。それがあなたが見なければならないものだと思うなら、私に知らせてください。

于 2012-10-16T12:03:25.213 に答える