MS报告设计器 - 什么是表组以及它们如何使用?

时间:2010-07-07 14:01:14

标签: reporting-services ssrs-grouping report-designer

我正在使用Reporting Services 2000/2005和带有内置报表设计器的Visual Studio 2005处理一些现有MS报表的项目。

我遇到过一个报告,它使用一个表来显示由Stored Proc提取的数据。我的工作要求我修改报告和存储过程。

我对存储过程进行了更改,并在SQL Management Studio中测试时返回正确的数据。但是,在报告中,有些数据因为原因而缺失,即使我使用完全相同的参数。

我有一种偷偷摸摸的感觉,它与为报告主表定义的表组有关。该表定义了2个表组。我删除了第二个表组中的一些项目,因为它们已从存储过程和报告中删除。也许我需要将存储过程中的新字段/列添加到表组中?

任何人都可以指出我正确的方向,如何调查/解决这个问题,以及表组是什么,以及如何使用它们。

2 个答案:

答案 0 :(得分:0)

表中的组以与SQL查询中的组类似的方式工作 - 其中的数据仅每组返回一次,而不是每个记录一次。但是,因为您还可以在表中包含详细信息行,所以您还可以从单个报表中查看组级别和详细级别数据,而这需要在SQL中进行单独的(子)查询。

例如,考虑SQL中的销售结构:

sales_month
sales_day
sales_product
sales_value

您可以使用查询

返回SQL中按日期顺序排列的所有销售清单
select * from sales order by sales_month, sales_day;

或者您可以使用查询

在SQL中按月返回所有销售的摘要
select sales_month, sum(sales_value) as monthly_sales 
from sales group by sales_month order by 1;

通过使用按月分组的报表,详细行和组页脚,您可以按日期顺序列出所有销售,并在每个月末列出每月的小计。

SSRS帮助中的教程说明了在报告中使用分组。

答案 1 :(得分:0)

好的,所以我将存储过程中的新列添加到表组中,并且它按预期工作。

我认为通过省略表组中的几个列,报告会对较少的字段进行分组,这意味着这些行都被视为相同的值。

当我一次添加一个新字段以匹配存储过程中的字段时,报告的准确性就越好。

我认为它类似于SQL要求Select子句中的每个字段也出现在Group By Clause中。