حساب الإجماليات الكلية مجموعة من المجاميع في "خدمات التقارير"
-
03-07-2019 - |
سؤال
لدي بعض البيانات مجمعة في الجدول حسب معايير معينة, و لكل مجموعة يتم احتساب متوسط —حسنا, هذا هو الحال الحقيقي هو أكثر قليلا صعبة— من القيم من كل التفاصيل الصفوف التي تنتمي إلى هذه المجموعة.هذا المتوسط هو مبين في كل مجموعة تذييل الصفوف.دعونا نرى هذا المثال البسيط:
ما أريده الآن هو إظهار المجموع الكلي على الجدول تذييل الصفحة.المجموع الكلي يجب أن يكون محسوب من قبل إضافة كل فريق متوسط (فعلى سبيل المثال, في هذا المثال المجموع الكلي يجب أن يكون 20 + 15 = 35).ومع ذلك, لا يمكن عش وظائف الكلي.كيف يمكن أن أفعل ؟
المحلول
"خدمات التقارير" (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.ثم استبدال التعبير المجموعة مع "رمز.DoubleAggregator.الكلي(Avg(الحقول!Column2.قيمة))" والتعبير عن المجموع مع "رمز.DoubleAggregator.مبلغ()".
نصائح أخرى
تحتاج فقط إلى إضافة مبلغ() وظيفة في الجدول تذييل وهو نطاق الخارجي من كلا الفريقين و سوف مبلغ لهم جميعا معا.إذا كنت التلخيص على شرط ، قد تحتاج إلى وضع هذا في هناك أيضا.
للأسف أنا من تقارير التنمية مربع في هذه اللحظة لكنه إما:
=(مبلغ(الحقول!Column1 + مبلغ(الحقول!Column2))
أو
=SUM(sum(الحقول!Column1) + مجموع(الحقول!Column2))
أنا متأكد إنه أول من 2.
لا يمكنك حقا ، ولكن يمكنك خداع ذلك.أنا blooged حل هذا هنا:http://dataqueen.unlimitedviz.com/2011/05/ssrs-aggregate-last-ytd-or-last-child-value-in-an-ssas-query/
يمكنك أن تفعل ببساطة على النحو التالي:مبلغ(CInt(الحقول!مدخلة.قيمة)) أو مبلغ(CInt(الحقول!DollarAmountOfCheck.قيمة) ، "DataSet1") في وقت ما عندما تكون البيانات القادمة من خلال صندوق رأس المال العامل ، فإنه لا يقبل مبلغ() وظيفة.ولكن هذا يعمل بشكل جيد في هذه الحالة.