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
这给出了以下结果
我正在设计一个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
这给出了以下结果