SSRS按组创建摘要而不使用子报表?

时间:2013-01-21 17:55:00

标签: sql-server-2008 reporting-services

我正在制作一份报告,我需要按小组显示摘要。该报告按餐厅的产品显示数据。它还需要按地区分区显示数据(区内所有餐馆的总数):

Restaurant 1
  Pepperoni Pizzas: 10
  Cheese Pizzas: 12
  Ham Pizzas: 15

Restaurant 2
  Pepperoni Pizzas: 5
  Cheese Pizzas: 12
  Ham Pizzas: 20

District Totals
  Pepperoni Pizzas: 15
  Cheese Pizzas: 24
  Ham Pizzas: 25

我采取的方法是根据主报告传递的参数,构建一个子报告,显示商店,区等的数据。从设计的角度来看,这是一个很简洁,而在运行时它是。有没有办法在不使用子报表的情况下创建区总计?

3 个答案:

答案 0 :(得分:3)

这可以通过一个数据集/报告和所需的多种不同食物类型来完成。我已经创建了一些基本数据:

create table Pizza
(
  district varchar(100)
  , restaurant varchar(100)
  , foodItem varchar(100)
  , quantitySold int
)

insert into Pizza
select 'District 1', 'Restaurant 1', 'Pepperoni Pizzas', 10
union all
select 'District 1', 'Restaurant 1', 'Cheese Pizzas', 12
union all
select 'District 1', 'Restaurant 1', 'Ham Pizzas', 15
union all
select 'District 1', 'Restaurant 2', 'Pepperoni Pizzas', 5
union all
select 'District 1', 'Restaurant 2', 'Cheese Pizzas', 12
union all
select 'District 1', 'Restaurant 2', 'Ham Pizzas', 20

对于报告,使用组(如果需要)和餐厅组创建基本的 Tablix

enter image description here

这里的技巧是我合并了最后一行中的所有单元格并将另一个表插入到单元格中,这次基于 Food 组:

enter image description here

因为它位于 District 范围内,所以它的基础数据将基于特定区域的所有行。最终结果:

enter image description here

这将重复多个。根据需要调整外观!

答案 1 :(得分:1)

正如我在评论中所说,你正在寻找一个包含静态内容或组内组的简单组。

为了避免使用子报告,您只需要在前两个示例中按餐厅分组,我认为您已经这样做了。

如果您的District Totals是静态内容,只需添加行,并在数据单元格中为您的所有比萨添加一个简单的总和,例如:[Sum(PepperoniPizzas)]

如果它已分组,您应该这样做,但在分组数据中。 根据您的问题,这是您可能意味着的第二种情况,您的整个数据按地区分组,然后按餐馆分组,如果是这样,这就是您的工作方式:

有餐厅的内部小组和分区的外部小组。 在这个页脚中,你应该像上面解释的那样做。 它看起来像这样:

|--Group by District
|----Group by Restaurant
|------Details or another group
|----End of group by restaurant
|----
|----District Totals
|----Pepperoni Pizzas - [Sum(PepperoniPizzas)]
|----Cheese Pizzas - [Sum(CheesePizzas)]
|----Ham Pizzas - [Sum(HamPizzas)]
|--End of district group

我现在在家,所以我无法向你展示报告,但我想上面的例子是可以理解的。让我知道这是否是你需要的,如果不是更多的话。当我明天上班时,我会用报告的样子来更新这个答案。

<强>更新

正如我所说,以下是您的报告的样子:

  • 小组

enter image description here

enter image description here

  • 报告本身

enter image description here

答案 2 :(得分:0)

如果您希望单独包含数据,我只会添加第二个数据集。

但是,如果您希望报告中的代码在“分组”中显示“总计”,我会添加一个分组列“总计”

EG:我有一个类似于你的小数据集:

declare @Pizza table ( restaurantid int identity, pizzas int)

insert into @Pizza values (10),(15),(5);

select * from @Pizza

我创建了一个表,其中唯一的值是:restaurantid,“详细信息”行中的比萨饼,它们在标题中生成类似的名称。

如果您希望总计,则需要在左下方的“设计”视图中查看“行组”。点击向下箭头&gt;添加总计&gt;之后。您现在添加了另一行,它将总计您表中的所有内容。您可以删除餐馆ID的单元格值,因为它们无关紧要,而是放入“Totals”等有用的内容。