SSRS 2012で製品カテゴリ別にグループ化された販売量のトップ10を取得しています。これらのトップ10の合計が必要ですが、完全な合計が表示されます。レポートの他の部分の完全なデータセットが必要なため、データセットレベルでそれを行うことはできません。 MSDNlink で与えられた解決策を試しましたが、それも役に立ちませんでした。前もって感謝します。
この種のアプローチは実際には非常にうまく機能します。
データ/メタデータがどのようなものかについては何も考えていませんが、概念は簡単な例で説明できます。次のデータを検討してください。
これに基づいて、grp
列でグループ化された簡単なレポートを作成します。
グループを合計値で最高から最低まで並べ替えます。
ランニングランクとランニング合計を取得するには、 RunningValue 関数を使用します。
グループランクを取得するには、次を使用します。
=RunningValue(Fields!grp.Value, CountDistinct, Nothing)
現在の総使用量を取得するには:
=RunningValue(Fields!val.Value, Sum, Nothing)
最後に、上位N個の値の合計を表示する必要があります。この場合、トップ2を表示しています。
2番目のグループ詳細行には、次の行の可視性式を使用します。
=IIf(RunningValue(Fields!grp.Value, CountDistinct, Nothing) = 2, false, true)
つまり、この行を表示するのは、2つのグループ、つまり上位2つがある場合のみです。必要に応じて値を変更できます。
これにより、必要に応じて合計1行が表示されます。
これらの概念をデータに適用する必要があります。それでも問題が解決しない場合は、上記のデータ/コードを使用して結果を複製し、関連するすべての概念を確実に理解することをお勧めします。
コメント後に編集:
Nグループより少ないが、それでも最後の合計を表示したい場合は、上位N行行の可視性にチェックを追加する必要があります。 )式、次のようなもの:
=IIf(RunningValue(Fields!grp.Value, CountDistinct, Nothing) = 10
or (RunningValue(Fields!grp.Value, CountDistinct, Nothing) = CountDistinct(Fields!grp.Value, "DataSet1") and CountDistinct(Fields!grp.Value, "DataSet1") < 10)
, false
, true)
したがって、式は10行目のを表示します。DataSet内のグループの総数が10未満の場合は、最後のグループ行を表示します。
それはもう少し複雑ですが、過去に私のために働いたことがあります。データとレポートの設定によっては、Scopeを少し試して、環境で機能させる必要がある場合があります。
現在の合計ではなく、上位10の合計だけが必要な場合は、テーブルを上位NのProductCategoryでフィルタリングし、ProductCategoryグループをSalesVolumeZからAで並べ替えることができます。
たとえば、販売注文と小計のテーブルがあります。合計上位10位を表示しています
値(TotalDue)の降順でSalesOrderIDグループで並べ替えました。次に、テーブルをフィルタリングして、上位10件のSalesOrderIDのみが表示されるようにしました。
大量のデータがある場合、テーブルフィルターは実行時に発生すると思うので、これがどのように実行されるかを確認する必要があるかもしれません。
私はそれを行う簡単な方法を見つけたと思います。レポートに「合計」がたくさんあり、あなたの答えが理解できませんでした。私が見つけた方法は、Detailsグループの親グループを作成し、Detailsの外側に合計行を追加することでした。次に、Detaisグループを非表示にすると、合計グループが合計を実行し、グループプロパティで、最後の合計上位N行をフィルタリングし、Zで合計をAに並べ替える必要がありました。これはすべて正常に機能し、グループプロパティで実行されました。 Tablixでは、popertiesは3行または4行しか表示しませんでした...