让我们举一个简单的例子来描述这可能是如何完成的。
让我们创建一个数据源,就本示例而言,这并不重要,因为示例中的所有数据都是自包含的。
使用以下填充数据集:
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
从您的工具箱中创建一个“表格”对象,并仅在左下角的单元格中插入“人”值,它也应该填充一个标题。对其旁边的单元格上的“订单”值执行相同的操作。删除右侧的列。您现在应该有四个填充单元格,两个带有标题的值单元格。
对于分组,让我们转到 Visual Studio 中“设计”视图的左下角,您应该会看到一个“行组”,其中当前只有“=详细信息”(或类似内容)。右键单击它并点击“添加父级”。选择“level1”上的组,然后单击“添加组标题”。您现在应该看到添加了另一行,但它是空白的,除了最左列的详细信息之外。在灰色块区域的左侧,您将看到一个 ( 将包含两行,表示它们是“分组”。
您可以再次执行第 4 步,除非有两个更改。这次右键单击 level1 以添加父级。然后改为在“level2”上分组。
如果要在第二级分组上分页,请选择“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。只要您将它们转换为引擎可以解释它,就没有关系。