SSRS报表多级组如何设置自动编号?

How to set automatic numbering for multilevel group in SSRS report?

我正在设计一个SSRS报告,需要为每个组生成自动编号。 数据来自 SQL 查询结果,如下所示:

Category        SubCategory       ItemName
------------------------------------------
Parent groupA   Parent group A1   item1
Parent groupA   Parent group A1   item2
Parent groupA   Parent group A2   item3
Parent groupA   Parent group A2   item4
Parent groupB   Parent group B1   item5
Parent groupB   Parent group B1   item6
Parent groupB   Parent group B2   item7
Parent groupB   Parent group B2   item8

我的报告布局:

1.Parent group A
   1.1 Parent group A1 
      1.1.1 Item 1
      1.1.2 Item 2
   1.2 Parent group A2
      1.2.1 Item 3
      1.2.2 Item 4
2. Parent group B
   2.1 Parent group B1 
      2.1.1 Item 5
      2.1.2 Item 6
   2.2 Parent group B2
      2.2.1 Item 7
      2.2.2 Item 8

我无法使用 RowNumber 和 RunningValue 函数生成此规则,或者还没有找到方法。 希望听到你的想法。谢谢!

这有点冗长,但应该可以。

我在这里所做的只是计算符号并将列值附加到末尾。然后您可以直接在报告中使用它。

我已将您的数据复制为 table 变量以供说明

DECLARE @t TABLE (Category varchar(30), SubCategory varchar(30) , ItemName varchar(30))
INSERT INTO @t VALUES 
('Parent groupA', 'Parent group A1', 'item1'),
('Parent groupA', 'Parent group A1', 'item2'),
('Parent groupA', 'Parent group A2', 'item3'),
('Parent groupA', 'Parent group A2', 'item4'),
('Parent groupB', 'Parent group B1', 'item5'),
('Parent groupB', 'Parent group B1', 'item6'),
('Parent groupB', 'Parent group B2', 'item7'),
('Parent groupB', 'Parent group B2', 'item8')

SELECT 
    *
    , CONCAT(DENSE_RANK() OVER(ORDER BY Category), '. ', Category) as CategoryID
    , CONCAT(
              DENSE_RANK() OVER(ORDER BY Category) , '.'
            , DENSE_RANK() OVER(PARTITION BY Category ORDER BY SubCategory), ' '
            , SubCategory
            ) as SubCategoryID
    , CONCAT(
              DENSE_RANK() OVER(ORDER BY Category) , '.'
            , DENSE_RANK() OVER(PARTITION BY Category ORDER BY SubCategory) , '.'
            , DENSE_RANK() OVER(PARTITION BY Category, SubCategory ORDER BY ItemName), ' '
            , ItemName
            ) as ItemID
    FROM @t

这给出了以下结果