2

SSRS レポートがあります。データベースには name の列がありますTotal_running_hoursCycle_numbe同じrを持つ複数の行のように、単一の Cycle_number に対して複数のレコードがありBlock_numbers、フィールドの値は、同じ rTotal_running_hoursを持つすべての行で同じになりCycle_numberます。
例えば。4 diff の 1 サイクル番号には、4 行すべてblock_numbersに同じ内容が含まれます。Total_running_hours

問題は、グループフッターにこのフィールドを配置すると、Total_running_hours値が1回だけ表示されることです。これは正しいですが、私の最終的な要件は、

グループごとの合計を表示する必要があるレポート フッターで、このフィールドの合計を取得する必要があります。単一の行がいくつあっても、一Cycle_number度だけ取得して結果を表示する必要があります。

私はさまざまな方法で試しました

=sum(ReportItems!textbox204.Value) // name of text box in Group footer

エラー: レポート アイテム式は、同じグループ化スコープ内またはそれを含むグループ化スコープ内の他のレポート アイテムのみを参照できます。

=sum(Fields!total_running_hours.Value,Group_name) 

エラー: スコープ パラメーターは、含まれているグループの名前、含まれているデータ領域の名前、またはデータ セットの名前のいずれかに等しい文字列定数に設定する必要があります。

グループごとの合計を取得するのを手伝ってください。

前もって感謝します。

4

1 に答える 1

0

この問題の解決策を見つけました。

Total_Running_hours の値を単純に合計することはできません。これにより重複が生じ、不正確な答えが得られるからです。レポート サービス グループは範囲外であるため合計できません。Reporting Services 2005 では SUM DISTINCT を使用できないため、個別の値を取得することはできません。

クエリは特定の Cycle_Number Type を返さない可能性があるため、それをフィルターとして使用することはできません。

見つかった解決策は、このように Cycle_Number で分割されたウィンドウ セット内に行番号の列を追加することでした。

ROW_NUMBER() OVER (PARTITION BY Cycle_Number ORDER BY Cycle_Number ) AS 'RowNumber'

次に、レポートのフッターの合計列に、最初の行の値のみを合計して、そのウィンドウ セットの他のすべての行をゼロに変換する式を配置します。

=SUM(IIF(Fields!RowNumber.Value=1,Fields!Total_Running_hours.Value,0))

これを使用した後、テキストボックスに #Error のようなエラーが見つかった場合

次に、これを試してください

=SUM(IIF(Fields!RowNumber.Value=1,CDbl(Fields!Total_Running_hours.Value),CDbl(0.0)))

于 2013-08-28T09:42:06.767 に答える