我觉得在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 by属性,“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
我如何澄清我的公式,使其仅针对最新年份而不是使用所有年份的值?
希望这是有道理的。
答案 0 :(得分:8)
使用您的数据:
在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
表达式中的最高年份。
这给出了所需的结果:
答案 1 :(得分:0)
您的问题是它按预期工作 - LOOKUPSET()函数返回公司匹配的数据集中的所有记录。您需要在使用LOOKUPSET()函数时收紧标准,或者添加一些自定义代码以通过返回的数组并清除重复项。
收紧查询的一个选项可能是将数据集中的计算字段添加到一起连接公司名称和年份,至少在查看您的示例数据时,会提供稍微更独特的密钥。 ;寻找。