2011-11-11 10 views
13

भीतर समूहों में समुच्चय के साथ एक समूह के भीतर गठबंधन करने के लिए इस डेटासेट के साथ:कैसे समुच्चय SSRS

Category | Amount 
A  | 5 
A  | 3 
B  | 6 
B  | 2 
B  | 1 
C  | 7 

मैं श्रेणी में समूहीकरण एक tablix बनाने के लिए, कुल राशि का प्रतिशत प्रदर्शित करना चाहते हैं:

Category | Percentage 
A  | 33% 
B  | 38% 
C  | 29% 

जो एक साधारण गणना होना चाहिए:

Category | Percentage 
A  | ((Sum of Amount within group/Sum of Amount across groups) * 100)% 
B  | ((Sum of Amount within group/Sum of Amount across groups) * 100)% 
C  | ((Sum of Amount within group/Sum of Amount across groups) * 100)% 

लेकिन मैं पुन भीतर करने के लिए कि कैसे को समझ नहीं सकता पोर्ट डिज़ाइनर (एसएसआरएस) - जब भी मैं Category पर पंक्ति समूह बनाना चाहता हूं, तो मुझे =Sum(Fields!Amount.Value) के साथ समूह के भीतर योग मिल सकता है। लेकिन समूह के भीतर एक सेल से समूहों में योग कैसे प्राप्त करें?

उत्तर

26

मैं अपने स्वयं के प्रश्न का उत्तर दूंगा।

किसी भी अभिव्यक्ति के भीतर से, सभी डेटासेट में लुकअप करना संभव है।

LookupSet(SourceFieldToCompare, TargetFieldToCompare, ResultField, DataSet) 

अब, चलो प्रश्न के लिए बार उठाते हैं और कहते हैं कि डेटा अभी तक एक और आयाम में वर्गीकृत किया गया होता है, महीने - इस तरह:: इस तरह के माध्यम से हम डेटा प्राप्त होगा

Category | January | February | March 
A  | 33%  | 37%  | 35% 
B  | 38%  | 36%  | 37% 
C  | 29%  | 27%  | 28% 

कहो प्रश्न में उल्लिखित डेटासेट को 'श्रेणियां' नाम दिया गया है। अब, LookupSet समारोह (Reference) पर कॉल:

LookupSet(Fields!Month.Value, Fields!Month.Value, Fields!Amount.Value, "categories") 

(ध्यान रखें कि पहले "महीना" tablix अंदर डाटासेट से जुड़ा हुआ है, और दूसरा "महीना" दूसरा तर्क में "है महीना "श्रेणियों" डेटासेट से!)

एक समस्या बनी हुई है: लुकअपसेट Object प्रकार देता है, जो Sum नहीं खाएगा। अब (Source)

Function SumLookup(ByVal items As Object()) As Decimal 
    If items Is Nothing Then 
    Return Nothing 
    End If 

    Dim suma As Decimal = New Decimal() 
    suma = 0 

    For Each item As Object In items 
    suma += Convert.ToDecimal(item) 
    Next 

    Return suma 
End Function 

, LookupSet समारोह योग सभी क्षेत्रों के गणना की जाती है पर Code.SumLookup फोन करके: आप एक कस्टम योग, (कस्टम कोड "रिपोर्ट गुण" में जोड़ दिया जाता है) का उपयोग करने की जरूरत है।

+3

+1 गंभीरता से यह मुझे पागल कर रहा है - क्यों पृथ्वी पर वे आपको लुकअपसेट फ़ंक्शन देते हैं जो Sum agg के साथ काम नहीं करता है! –

2

आप स्कोप वर्णनकर्ता इस्तेमाल किया जा सकता था समूहों योग के खिलाफ चलाया जा रहा है कि पहचान करने के लिए:

  • श्रेणी समूह में tablix पंक्ति समूह परिभाषित किया गया है।
  • डेटासेट 1 डेटासेट का नाम है।

समूहीकृत राशि: [योग (राशि)]

डेटासेट कुल: योग (फील्ड्स Amount.Value, "DataSet1"!)

प्रतिशत:! योगफल (फील्ड्स Amount.Value, "श्रेणी ")/एसयूएम (फ़ील्ड्स! एमाउंट.वैल्यू," डेटासेट 1 ")

संबंधित मुद्दे