2012-11-09 19 views
8

私はかなり単純な問題だと思っていますが、私の人生はそれをどうするかを考え出すことはできません(SSRS 2008 R2)。私は詳細データ(だけでなく、集約)SSRS 2008 R2のサマリーグループ項目

私はデータの行(輸送費)を持っているとジョブコストの分布を表示する必要があるとして、私は、Tablixのを使用してい

レポートで(簡略)のデータが

です
 
TrackNo  ShipCost NoJobs   JobNo  Job Cost 
T1    10.00  1    J1   10.00 
T2    10.00  3    J2   3.33 
T2    10.00  3    J3   3.33 
T2    10.00  3    J4   3.33 

したがって、TrackNo T1には1つのジョブが関連付けられ、TrackNo T2には3つのジョブが関連付けられている場合があります。私は仕事全体のコストを比例させます。それぞれの出荷は$ 10かかります場合:

  • 何T1を追跡しないため、仕事なしJ1にはT2を追跡しないための$ 10.00
  • を取得していないだろう、ジョブJ2、J3 & J4はそれぞれ$ 3.33

を取得します私がしたいです

 
TrackNo  Ship Total   No. Jobs   Job No    Job Total 
+ T1   10.00    1 
                J1     10.00 
+ T2   10.00    2               
                J2     3.33 
                J3     3.33 
                J4     3.33 

私のレポートでは、グループ1は追跡していません。グループ2(子グループ)はジョブ番号です。レポートの

 
TrackNo 
    JobNo 

船の合計は、私がレポート全体ShipTotalを合計したいFirst(Fields!ShipTotal.Value)

である(これらは丸め誤差を持っているように、仕事の合計を合計していない:例えば3.33 * 3 = 9.99)

グループ1(First(Fields!ShipTotal.Value))に対して示された値を合計するにはどうすればよいですか?私はScopeが道だと思っていますが、私は迷っています。

答えて

17

多くの場合、この質問にはSSRSの古いバージョンが頼まれていますので、必要な機能をサポートしている最新バージョンにお答えしてうれしいです。 SSRS 2008 R2では、集約の集約をサポートしました。レポートのためのあなたの合計ボックスで

がする式を設定:あなたが述べたように

=SUM(MAX(Fields!ShipTotal.Value, "TrackNo"), "DataSetName") 

、適用範囲はこれの重要な部分です。上記の式は、SSRSが各 "TrackNo"グループの最初のShipTotalを取得し、それらをデータセットの各TrackNoグループに追加する必要があることを示しています。 (あなたのデータはもちろん、そこに名前を設定し置き換えてください。)

二つの他の2つの方法をも同様にSSRSの以前のバージョンで動作します。この結果を得るために:

  • 使用埋め込みコードをkeep track of the aggregateに。
  • クエリで数式を実行するか、結果を別のデータセットで返すか、各行で新しいフィールドとして返します。
+0

これはSSRS 2005で動作しますか?私はそれを試してみたとき、私は "集計関数は他の集計関数の中にネストすることはできません"というエラーを取得します。 – FistOfFury

+3

いいえ、この機能はSSRS 2008R2で追加されました。 2005年にこれを実装する方法はいくつかあります。最も一般的な方法の1つは、実行中の合計を保存し、グループごとに1回だけ追加するカスタムコードを使用することです。このようなもの:http://devshed.us/Blogs/tabid/227/EntryId/552/SSRS-How-to-get-a-running-total。aspx –

+1

私のようにグループフッタに合計が必要な場合は、データセットを指定する必要はありません: '= Sum(Max(Fields!ShipTotal.Value、" TrackNo "))'で十分です – Johann

関連する問題