如何获得SSRS来创建副标题?

时间:2014-10-10 03:34:02

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

问题

我正在构建一份SSRS报告,该报告需要在某些行上定期进行组标题。从数据库查询返回的数据包括一个带有位标志的列,指示哪些行需要作为组子标题处理。

以下是源数据片段:

enter image description here

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

我想生成看起来像这个Excel样机的输出:

enter image description here

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

发生了什么

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

enter image description here

请注意,“0401”行在组标题下重复。此外,只有第一组标题才能获得这种特殊待遇。该报告只是忽略后续的组标题,并将它们呈现为正常的数据行。

问题

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

1 个答案:

答案 0 :(得分: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进行分组即可完成。