Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 分组时组合多行中列内值的SSR_Sql_Visual Studio 2010_Visual Studio_Reporting Services - Fatal编程技术网

Sql 分组时组合多行中列内值的SSR

Sql 分组时组合多行中列内值的SSR,sql,visual-studio-2010,visual-studio,reporting-services,Sql,Visual Studio 2010,Visual Studio,Reporting Services,我觉得这在SSRS报告中应该相对容易做到。使用VS2010。我有一个来自基本sql查询的表。只是将列放入VisualStudio中的a表中。我想先按公司对表进行分组,这是通过行组属性完成的。我有一张像这样的桌子 Company Contact ContactSub SubCert Year Bank3 Joey Steven.B A 2010 Bank2 Dave James

我觉得这在SSRS报告中应该相对容易做到。使用VS2010。我有一个来自基本sql查询的表。只是将列放入VisualStudio中的a表中。我想先按公司对表进行分组,这是通过行组属性完成的。我有一张像这样的桌子

 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 Sub和它们的subcert合并到一行中。但仅使用最近一年的数据。因为某些ContactSub可能已将其SubCert从A 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
我如何才能澄清我的公式,使其仅表示最新的一年,而不是使用所有年份的值


希望这是有意义的。

您的问题是它正在按预期工作-lookupper()函数将返回公司匹配的数据集中的所有记录。您需要在使用lookupper()函数时严格遵守标准,或者添加一些自定义代码来遍历返回的数组并清除重复项

加强查找的一个选项可能是向数据集中添加一个计算字段,将公司名称和年份连接在一起,至少从示例数据来看,这将提供您要查找的更独特的键。

数据:

和一个分组在
公司
上的表格:

我使用以下表达:

ContactSub

=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)
以及
字段!Company.Value
仅匹配
LookupSet
表达式中的最高年份

这将提供所需的结果:


是否有任何原因导致上述建议的解决方案不会按日期过滤,并且仍然包含所有值?嗯。。。我似乎仍然得到同样的东西。我所读到的一切也都证实了你的回答。我一定是做错了什么。为什么你的年专栏里也有一个表达式呢?那一列是什么?@dcdeez,为截图道歉,年中的表达式可以作为
Max(Fields!Year.Value)
。。。我一直在玩一些东西,并在错误的时间截图-我现在更新。也许根据一些样本数据开始一份新的测试报告,就像我作为控件所做的那样,将有助于解决您的其他问题。