我觉得这在 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
我怎么能澄清我的公式,让它只说最新的一年,而不是使用所有年份的值?
希望这是有道理的。
最佳答案
使用您的数据:
还有一个分组在 Company
上的表:
我使用以下表达式:
联系我
=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
中最高的年份表达。这给出了所需的结果:
关于sql - SSRS在分组时组合来自多行的列内的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22153473/