簡體   English   中英

SSRS在分組時組合來自多行的列中的值

[英]SSRS Combining values within columns from multiple rows when grouped

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

 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從B升級為A.

 Company       Contact            ContactSub            SubCert     Year

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

我在屬性中添加了一個額外的gorup,行的“Year”列,並將此公式用於表中的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

我怎么能澄清我的公式,讓它只說最新一年,而不是使用所有年份的價值?

希望這是有道理的。

使用您的數據:

在此輸入圖像描述

並在Company分組的表格:

在此輸入圖像描述

我使用以下表達式:

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表達式中的最高年份。

這給出了所需的結果:

在此輸入圖像描述

您的問題是它按預期工作 - LOOKUPSET()函數返回公司匹配的數據集中的所有記錄。 您需要在使用LOOKUPSET()函數時收緊標准,或者添加一些自定義代碼以遍歷返回的數組並清除重復項。

收緊查詢的一個選項可能是將計算字段添加到數據集中,該數據集將公司名稱和年份連接在一起,至少查看您的示例數據,這將提供您正在尋找的稍微更獨特的密鑰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM