首页 > 解决方案 > 如何在 SSRS 的数据区域中引用不同的数据集?

问题描述

我有 3 个数据集,我想在 1 个报告中显示,另外一个控制一些分组。这 3 个数据集来自相同的来源,只是不同的 WHERE 子句和不同的字段。

我已经尝试过子报告,但似乎我只能添加子报告,如果它们已上传到服务器(?),或者我在 VS 中构建这些并且是解决方案的一部分。当我尝试浏览到报表生成器中的子报表时,对话框会询问我Look In: Recent Sites and Servers,并且什么都不列出。

我尝试向组添加页脚并插入新表并将新表与不同的数据集相关联,但它会恢复为包含 tablix 的数据集。

我的数据示例:

Groupings
company|division|division_id
    a  |  div-a |  1
    a  |  div-b |  2

 Current Items
 item | division  
  ia  |   div-a
  ib  |   div-a
  ic  |   div-b

 New Items
 item  | division
  nia  | div-b
  nib  | div-b

 Ended by Discontinuation Reason
 reason |  division
  bad   |   div-a
  lame  |   div-b
  bad   |   div-a

任何人都可以阐明如何将略微脱节的数据放入同一份报告中吗?谢谢你。

标签: ssrs-2012reportbuilder3.0

解决方案


理想情况下,最好有一个数据集。WHERE您应该使用 aINNER JOIN并且只有一个查询/数据集,而不是使用不同的查询,每个查询都有不同的子句。

例如,而不是具有以下内容:

 SELECT 
  Field1
 ,Field2
 FROM Table1
 WHERE Field1 > 5

 SELECT 
  Field1
 ,Field2
 FROM Table1
 WHERE Field1 < 5

 SELECT 
  Field1
 ,Field2
 FROM Table1
 WHERE Field1 = 5

你应该做:

 SELECT 
  G5.Field1
 ,G5.Field2
 ,L5.Field1
 ,L5.Field2
 ,E5.Field1
 ,E5.Field2

 FROM Table1
 INNER JOIN G5 
 ON G5.Field1 > 5   
 INNER JOIN L5 
 ON L5.Field1 < 5 
 INNER JOIN E5 
 ON E5.Field1 = 5 

这样,您只有一个数据集。您可以在 SSRS 表中随意使用不同的字段,因为每个字段都基于特定的标准。


推荐阅读