使用SQL Server报告服务在单个报告中使用两个数据集

时间:2011-09-06 12:53:47

标签: asp.net sql-server dataset ssrs-2008 reportingservices-2005

我需要显示具有不同条件的相同数据集的报告。

  1. 我需要显示通过分组区域,国家和用户类型注册的用户数,我使用了向下钻取功能来显示这个并且工作正常。报告的数据也是两个日期之间注册的用户数。除此之外,我必须使用相同的向下钻取来显示系统中的总用户数,即按区域,国家和用户类型划分的总用户数以及每个计数(两个日期之间的用户数)
  2. 这样我的结果就像下面那样

       Region  - Country - New Reg - Total Reg - User Type 1 - UserType2
    
     + Region1              2          10         1    5        1    5
    
     + Region2              3           7         2    4        1    3
    

    并且在扩展该区域时,它将像

      Region  - Country - New Reg - Total Reg - User Type 1 - UserType2
    
     + Region1              2          10         1    5        1    5
                country1    1           2         1    2        -    -
    
                country2    1           8         1    8        -    -
    
    
     + Region2              3           7         2    4        1    3
    

    有没有办法可以像这样展示我的报告,我尝试过两个数据集,一个是条件数据,另一个是非条件数据但是它不起作用,它始终是所有总数的有用信息的用户总数reg列

2 个答案:

答案 0 :(得分:1)

除非我弄错了,否则你试图创建一个具有不同分组级别的可扩展表格?幸运的是,如果您知道在哪里查看,可以在SSRS中轻松完成。您的示例中的总计似乎在用户列中不匹配,因此我可能误解了该问题。

对于初学者,设置查询以生成如下的单个数据集:

Region  Country      New Reg - Total Reg -  User Type 1 - User Type 2
Region1 country1    1              2            1   
Region1 country2    1              8            1   
Region2 country3    2              4            1              1
Region2 country4    1              3            1   

现在你已经有了,你想要设置一个新表,其中包含“NewReg”,“TotalReg”,“UserType1”和“UserType2”字段。然后右键单击表格行,并转到“添加组>行组>父组”。在Group by中选择“Country”,然后单击“ok”。然后,重复此过程并选择“区域”。但是,这次勾选“添加组标题”框。这将在原件上方插入另一行。

现在,对于您的每个字段(“NewReg”,“TotalReg”等),请单击上面的新行并再次选择该字段。这将自动将Sum(FieldName)值添加到单元格中。这会将所有单个行总计相加,并在运行报表时显示一个新的按地区分组的行。

这应该为您提供正确聚合数据所需的表格,因此您需要做的就是按需管理显示/隐藏详细信息行。

要执行此操作,请选择您的详细信息行(原始行),然后右键单击“>行可见性”。将其设置为“隐藏”。现在,选择包含“Region”的单元格并使用Properties记下它的ID(现在,我们假设它被称为“Region”)。单击返回您的详细信息行,然后查看属性窗口。在底部,您将看到“可见性”设置。在那里,将“InitialToggleState”设置为False,将“ToggleItem”设置为您所在地区组的单元格的名称(即“Region”)。

现在应该留下的只是进行格式化等整理。

答案 1 :(得分:0)

我已经通过从DB获取所有记录并使用以下表达式过滤记录来收集新的reg计数来解决此问题

=Sum(IIF(Fields!RegisteredOn.Value  >Parameters!FromDate.Value and  Fields!RegisteredOn.Value  < Parameters!EndDate.Value , 1,0))