我觉得在SSRS报告中这样做应该相对容易。使用VS2010。我有一个来自基本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及其子证书合并为一行。但仅使用最近的年份。因为某些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,并将该公式用于表中的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上分组的表:

我使用以下表达式:

联系人Sub

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

子证书
=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表达式中最高的年份。

这给出了所需的结果:

07-24 09:38
查看更多