【问题标题】:SSRS create summary by group without using subreport?SSRS 按组创建摘要而不使用子报表?
【发布时间】:2013-01-21 17:55:00
【问题描述】:

我正在构建一个需要按组显示摘要的报告。该报告按餐厅按产品显示数据。还需要按地区按产品显示数据(一个地区所有餐厅的总数):

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

我采用的方法是构建一个子报告,该报告将根据主报告传递的参数显示商店、地区等的数据。从设计的角度来看,这很麻烦,并且在运行时缓慢。有没有办法在不使用子报表的情况下创建地区总数?

【问题讨论】:

  • 它们都在同一个数据集中吗?
  • @eestein:是的。地区总数只是按产品分组的商店的总和。
  • 那么您不需要子报告...您所说的是一个简单的分组,其中包含静态内容或组内的组,具体取决于您的意思。看看我的回答有没有帮助。

标签: sql-server-2008 reporting-services


【解决方案1】:

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

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,其中包含 District 组(如果需要)和 Restaurant 组:

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

因为这是在 District 范围内,它的基础数据将基于特定地区的所有行。最终结果:

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

【讨论】:

    【解决方案2】:

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

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

    如果您的 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
    

    我现在在家,所以我不能给你看报告,但我想上面的例子很好理解。让我知道这是否是您需要的,如果不是详细说明的话。明天上班时,我会用报告的样子更新这个答案。

    更新

    正如我所说,您的报告应如下所示:

    • 团体

    • 报告本身

    【讨论】:

    • 我没有想过要为地区总数创建静态内容。餐厅下的细节(产品)是动态的。有没有办法使用动态来获取地区详细信息?
    • 您的意思是 PepperoniPizza、CheesePizza 和 HamPizza 不是字段,但 Pizza 是以任何披萨作为内容。是吗?
    • 它们不是字段。从概念上讲,数据库记录是 RestaurantID、PizzaTypeID、Count。主键是 RestaurantID 和 PizzaTypeID。比萨饼种类多得多。
    • @poke 那么您只需使用动态字段更改静态数据。
    【解决方案3】:

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

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

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

    declare @Pizza table ( restaurantid int identity, pizzas int)
    
    insert into @Pizza values (10),(15),(5);
    
    select * from @Pizza
    

    我创建了一个表,其中唯一的值是:restaurantid、'detail' 行中的比萨饼,它们在标题中生成相似的名称。

    如果您希望获得总计,您需要在左下方的“设计”视图中查看“行组”。单击向下箭头>添加总计>之后。您现在添加了另一行,它将汇总到目前为止表中的所有内容。您可以删除餐厅 ID 的单元格值,因为它们无关紧要,并改为输入有用的内容,例如“Totals”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-22
      • 1970-01-01
      • 1970-01-01
      • 2011-06-16
      • 1970-01-01
      • 2014-02-13
      相关资源
      最近更新 更多