sql - SSRS在分组时组合来自多行的列内的值

标签 sql visual-studio-2010 visual-studio reporting-services

我觉得这在 SSRS 报告中应该比较容易做到。使用 VS 2010。我有一个来自基本 sql 查询的表。只需将列放入 Visual Studio 中的表中即可。我想首先按公司对表进行分组,这是通过行组属性进行的。我有一张看起来像这样的 table 。

 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

我按属性添加了一个附加组,即行的“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

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

希望这是有道理的。

最佳答案

使用您的数据:

enter image description here

还有一个分组在 Company 上的表:

enter image description here

我使用以下表达式:

联系我

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

这给出了所需的结果:

enter image description here

关于sql - SSRS在分组时组合来自多行的列内的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22153473/

相关文章:

php - 评论区sql注入(inject)

mysql - 为什么使用 GROUP BY 的 SQL 查询会产生更多的行?

c++ - .lib 链接其他 .libs

visual-studio - 如何衡量开发人员构建时间

sql - 从此表中选择

sql - postgres - 比较两个数组

windows - 我们应该使用 _In_ 而不是 __in 吗?

c# - 使用 VS 2010 创建 ASP.NET 复合自定义服务器控件并将 JQuery (CDN) 作为嵌入式资源?

visual-studio-2010 - 将列表模板 STP 文件导入到 Visual Studio 2010

c# - Visual Studio 2008 html 项目文档