【问题标题】:How can I get SSRS to create subheadings?如何让 SSRS 创建子标题?
【发布时间】:2014-10-10 13:22:20
【问题描述】:

问题

我正在构建一个 SSRS 报告,该报告需要在某些行上使用常规组标题。从数据库查询返回的数据包含一个带有位标志的列,指示哪些行需要被视为组子标题。

这是源数据的 sn-p:

注意 IsGroupHeading 列,其中第一行的标志设置为 1(“0401”)。

我想生成类似于此 Excel 模型的输出:

因此,每当报表遇到 IsGroupHeading 等于 1 的行时,它都会生成一个粗体组标题行,然后是一个带有列标题的行。

发生了什么

我尝试在 SSRS 中使用表达式=Fields!IsGroupHeading.Value = 1 创建一个行组,但得到了意想不到的结果:(1) 只有第一个组标题被特殊处理,(2) 组标题行在标题下方重复.结果如下所示:

请注意,“0401”行在组标题下重复出现。此外,只有第一个组标题得到这种特殊处理。报告只是忽略后续组标题并将它们呈现为普通数据行。

问题

我花了好几个小时试图做到这一点,这是我能做到的最接近的,我在行组上的谷歌搜索出现的页面主要是关于创建小计的,所以我把这个扔给社区希望一些 SSRS 专家可以帮助我。

【问题讨论】:

    标签: sql-server visual-studio-2010 reporting-services


    【解决方案1】:

    我将假设您在 SQL 中执行此操作,并且所有关税编号都以组标题关税编号开头(在本例中为 0401)。

    假设您的 SQL 当前如下所示:

    SELECT TariffNumber, RowDescription, TariffRate, IsGroupHeading
    FROM Tariffs
    

    我们要做的是将这个表连接到自身上,以便在每一行上为组提供 TariffNumber 和 RowDescription 列,以便我们对其进行分组。我们还想从 Details 行中排除 GroupHeader Tariff。所以我们得到这样的结果:

    SELECT TariffGroup.TariffNumber AS GroupNumber, TariffGroup.RowDescription AS GroupDescription, 
      TariffDetail.TariffNumber, TariffDetail.RowDescription, TariffDetail.TariffRate
    FROM Tariffs AS TariffDetail
    INNER JOIN Tariffs AS TariffGroup ON TariffGroup.TariffNumber = Left(TariffDetail.TariffNumber, CharIndex(TariffDetail.TariffNumber, '.')-1) AND TariffDetail.IsGroupHeader = 0
    

    现在您只需在GroupNumber 上进行分组即可。

    【讨论】:

    • 谢谢克里斯,你成功了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多