質問

特定の基準でテーブルにグループ化されたデータがあり、各グループについて平均で計算されます—まあ、実際のケースはもう少しトリッキーです—そのグループに属する各詳細行からの値。この平均は、各グループのフッター行に表示されます。この簡単な例を見てみましょう:

レポートテーブル

今必要なのは、テーブルフッターに総計を表示することです。総計は、各グループの平均を追加して計算する必要があります(たとえば、この例では、総計は20 + 15 = 35である必要があります)。ただし、集計関数をネストすることはできません。どうすればいいですか?

役に立ちましたか?

解決

Reporting Services(2005、おそらく2008)も、集計の集計を直接サポートしていません。

カスタムレポートアセンブリ、コード参照、および名前付きオブジェクト(レポートプロパティ、参照)を使用して、自分で値を集計できます。

コードは次のようになります。

Public Sub New()

    m_valueTable = New DataTable(tableName:="DoubleValueList")

    'Type reference to System.Double
    Dim doubleType = Type.GetType(typeName:="System.Double")

    ' Add a single Double column to hold values
    m_valueTable.Columns.Add(columnName:="Value", type:=doubleType)

    ' Add aggregation column
    m_sumColumn = m_valueTable.Columns.Add(columnName:="Sum", type:=doubleType, expression:="Sum(Value)")
End Sub
Public Function Aggregate(ByVal value As Double) As Double

    ' Appends a row using a 1-element object array. 
    ' If there will be more than 1 column, more values need to be supplied respectively.
    m_valueTable.Rows.Add(value)

    Aggregate = value
End Function
Public ReadOnly Property Sum() As Double
    Get

        If 0 = m_valueTable.Rows.Count Then
            Sum = 0
        Else
            Sum = CDbl(m_valueTable.Rows(0)(m_sumColumn))
        End If
    End Get
End Property

たとえばDoubleAggregatorで参照する名前。次に、グループ式を" Code.DoubleAggregator.Aggregate(Avg(Fields!Column2.Value))"に置き換えます。および" Code.DoubleAggregator.Sum()"を使用したTotalの式。

他のヒント

両方のグループの外部スコープであるテーブルフッターにSUM()関数を追加するだけで、それらをすべて合計します。条件に基づいて合計する場合は、それもそこに入れる必要があります。

残念ながら、現時点ではレポート作成ボックスから離れていますが、次のいずれかです。
=(sum(Fields!Column1 + sum(Fields!Column2))
または
= SUM(sum(Fields!Column1)+ sum(Fields!Column2))

2。の最初のものであると確信しています。

実際にはできませんが、だますことができます。私はこれに対する解決策をここに盛り込んだ: http://dataqueen.unlimitedviz.com/2011/05/ssrs-aggregate-last-ytd-or-last-child-value-in-an-ssas-query/

次のように簡単に実行できます。 Sum(CInt(Fields!TestValue.Value))  またはSum(CInt(Fields!DollarAmountOfCheck.Value)、" DataSet1") データがWCFを経由する場合、Sum()関数を受け入れません。ただし、この場合は正常に機能します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top