2014-03-03 21 views
3

我覺得在SSRS報告中這應該相對容易。使用VS 2010.我有一個來自基本的SQL查詢的表。只需將列放入Visual Studio中的表格即可。我想先按公司對錶格進行分組,這是通過行組屬性進行的。我有一張看起來像這樣的桌子。SSRS在分組時,將多個行的列內的值組合起來

Company  Contact  ContactSub SubCert Year 

    Bank3  Joey  Steven.B  A   2010 
    Bank2  Dave  James   A   2010 
    Bank2  Dave  Steve   B   2010 
    Bank2  Dave  Mark   B   2010 
    Bank2  Dave  James   A   2011 
    Bank2  Dave  Steve   A   2011 
    Bank2  Dave  Mark   B   2011 
    Bank2  Dave  James   A   2012 
    Bank2  Dave  Steve   A   2012 
    Bank2  Dave  Mark   A   2012 

我現在想要將Contact Subs和它們的subcert合併成一行。但只使用最近的一年。由於一些ContactSub可能有他們的SubCert升級到A從B.

Company  Contact   ContactSub   SubCert  Year 

    Bank3   Joey    Steven.B    A   2010 
    Bank2   Dave    James,Steve,Mark  A,A,A  2012 

我加入地產附加gorup,「年」列到行和使用這個公式爲ContactSub和SubCert列表:

=Join(LookupSet(Fields!Company.Value,Fields!Company.Value,Fields!SubCert.Value,"DataSet Name"),",") 

但是這回我:

Company  Contact  ContactSub     SubCert  Year 

    Bank3  Joey  Steven.B     A   2010 
    Bank2  Dave  James,Steve,Mark,James  A,B,B,A, 2012 
          Steve,Mark,James, Steve A,B,A,A, 
          Mark      A 

我怎麼會澄清我的公式,使其說只有最新的一年,而不是使用值的所有年份?

希望這是有道理的。

回答

6

與您的數據:

enter image description here

而且在Company分組表:

enter image description here

我用下面的表達式:

ContactSub

=Join(LookupSet(Fields!Company.Value & Max(Fields!Year.Value) 
    , Fields!Company.Value & Fields!Year.Value 
    , Fields!ContactSub.Value 
    , "DataSet1"), ",") 

SubCert

=Join(LookupSet(Fields!Company.Value & Max(Fields!Year.Value) 
    , Fields!Company.Value & Fields!Year.Value 
    , Fields!SubCert.Value 
    , "DataSet1"), ",") 

你可以看到我使用Max(Fields!Year.Value)以及Fields!Company.Value只匹配上最高年份的LookupSet表達。

這給了所要求的結果:

enter image description here

+0

嗯......我似乎仍然得到相同的確切的事情返回。我讀過的所有內容都會驗證您的回覆。我必須做錯事。爲什麼你的年份專欄也有一個表達?那一欄是什麼? – dcdeez

+0

@dcdeez,對截圖表示歉意,在** Year **中的表達是'Max(Fields!Year.Value)'......我一直在玩弄東西,並在錯誤的時間截取了屏幕截圖 - 我現在已經更新。也許根據一些示例數據開始一個新的測試報告,就像我作爲一個控件一樣,將有助於解決其他問題。 –

0

你的問題是,它的工作原理如下 - LOOKUPSET()函數返回所有記錄來自公司匹配的數據集。您需要在使用LOOKUPSET()函數時收緊標準,或者添加一些自定義代碼來遍歷返回的數組並清除重複項。

收緊查詢的一個選擇可能是爲您的數據集添加一個計算字段,它將公司名稱和年份連接在一起,至少查看您的樣本數據將提供稍微更獨特的密鑰,重新尋找。

+0

是否有任何理由爲什麼上述建議的解決方案將不會按日期進行過濾,幷包括所有的值仍? – dcdeez