我正在使用Reporting Services 2000/2005和带有内置报表设计器的Visual Studio 2005处理一些现有MS报表的项目。
我遇到过一个报告,它使用一个表来显示由Stored Proc提取的数据。我的工作要求我修改报告和存储过程。
我对存储过程进行了更改,并在SQL Management Studio中测试时返回正确的数据。但是,在报告中,有些数据因为原因而缺失,即使我使用完全相同的参数。
我有一种偷偷摸摸的感觉,它与为报告主表定义的表组有关。该表定义了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中。