【问题标题】:How to set automatic numbering for multilevel group in SSRS report?如何在 SSRS 报告中为多级组设置自动编号?
【发布时间】:2022-01-07 03:02:49
【问题描述】:

我正在设计一个 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 函数生成此规则,或者没有找到方法。 希望听到你的想法。谢谢!

【问题讨论】:

  • 您可以将逻辑添加到您的源数据集中吗?如果您从 SQL 脚本中获取数据,这是一个相当简单的添加。
  • @iamdave 谢谢。我在我的问题中包含了查询描述。希望你有足够的线索。

标签: visual-studio reporting-services ssrs-2012 ssrs-tablix reportbuilder


【解决方案1】:

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

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

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

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

这给出了以下结果

【讨论】:

  • 抱歉回复晚了。我不认为在查询方面做更多工作,您的解决方案在我项目的其他情况下对我有很大帮助。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-21
  • 2014-10-11
相关资源
最近更新 更多