1

我有这个问题,在一个小组中定义了几个问题,其中一个问题有一个描述性的答案,其余的是数字。有3个这样的群体,未来可以发展壮大。我想生成一个报告,其中我在一页中显示组的结果,但应该为每个组动态生成。

输出将如下所示:


 |Group_Category|     |    {Matrix Style; }
 |Question      |Value|


 |Group_Category|                  |   {Table}
 |(+)Question   |Descriptive Answer|

因此,必须针对不同页面上的每个组重复此操作。谁能帮帮我

谢谢

4

2 回答 2

1

让我们举一个简单的例子来描述这可能是如何完成的。

  1. 让我们创建一个数据源,就本示例而言,这并不重要,因为示例中的所有数据都是自包含的。

  2. 使用以下填充数据集:

    DECLARE @Table TABLE (personID int IDENTITY, person varchar(8), 
    orders int, level1 int, level2 int); 
    
    INSERT INTO @Table VALUES    ('Brett', 10, 1, 1), ('John', 20, 1, 1), 
    ('Peter', 15, 2, 1), ('Jessica', 25, 2, 1), ('Eddie', 7, 3, 1), 
    ('Jimi', 50, 3, 1), ('Robert', 5, 1, 2)
    
    SELECT *
    FROM @Table
    
  3. 从您的工具箱中创建一个“表格”对象,并仅在左下角的单元格中插入“人”值,它也应该填充一个标题。对其旁边的单元格上的“订单”值执行相同的操作。删除右侧的列。您现在应该有四个填充单元格,两个带有标题的值单元格。

  4. 对于分组,让我们转到 Visual Studio 中“设计”视图的左下角,您应该会看到一个“行组”,其中当前只有“=详细信息”(或类似内容)。右键单击它并点击“添加父级”。选择“level1”上的组,然后单击“添加组标题”。您现在应该看到添加了另一行,但它是空白的,除了最左列的详细信息之外。在灰色块区域的左侧,您将看到一个 ( 将包含两行,表示它们是“分组”。

  5. 您可以再次执行第 4 步,除非有两个更改。这次右键单击 level1 以添加父级。然后改为在“level2”上分组。

  6. 如果要在第二级分组上分页,请选择“level2”(或该分组的通用等效名称)单击 F4。展开属性下的“PageBreak”。将“BreakLocation”更改为“开始”。您的报告现在将在您的最高级别分组之前分页。

您无需担心使用 SSRS 添加更多组。您只需要担心它们会在正确的列中得到区分以动态工作。如果我稍后在我的表中添加更多数据以显示级别 1 的 1、2 或 3 以外的分组,SSRS 会捕获它,我不必担心。

编辑如果您有不同类型的数据以及不同的数据集,请记住您可以使用 UNION 轻松解决此问题:

例如:

Select 'I am strings' as group1, 'Descriptive String' as Detail
from dataset1
UNION
Select 'I am numbers', cast(1 as varchar(64))
from dataset2

当 SSRS 解释“group1”时,它只看到两个不同的值,因此可以对它们进行分组。它不关心将两种不同类型放在一起的底层 SQL。只要您将它们转换为引擎可以解释它,就没有关系。

于 2013-03-22T21:50:29.907 回答
0

我可以通过使用 Rectangle 属性来解决上述问题。

基本上定义了

Group_Category ”在矩形旁边,然后在类别下方的矩形内放置一个矩阵和一个表格。这帮助我在页面上有一个父组,并在里面有其他组和计算。

I 字段和数据必须来自或填充来自同一数据集。

于 2013-04-04T16:29:35.503 回答