Reporting Services Bug 和建议的解决方法

Reporting Services Bug and a proposed workaround

我已经建立了一个业务报告,可以生成每个部门每月销售额的季度报告,并且 Microsoft Reporting Services 中似乎有一个错误。 报告模板就像

Sales report Q[@Quarter]/[@Year]

Department   Month   Sales
[department] [month] [sales]
             Sum     [Sum(sales)]
Overall sum          [Sum(sales)]

数据源是一个sql查询,如

SELECT department,DATENAME(MONTH(invoiceDate)) AS month,SUM(invoiceAmount) AS sales
FROM sales WHERE ...
ORDER BY department,MONTH(invoiceDate) 
GROUP BY department,MONTH(invoiceDate)

假设部门 1 全年都存在,部门 2 是在 12 月添加的。生成的输出是:

Department   Month   Sales
Department 1   Oct   $ x
               Nov   $ y
               Dec   $ z
             Sum     $ (x+y+z)
Department 2         $ i
             Sum     $ i
Overall sum          $ (x+y+z+i)

您看,报告中缺少月份名称。我发现这种情况会发生只要一个部门的第一个月是前一个部门在最后一行的月份,就像一个部门在 11 月中旬被替换一样 - 它不再存在于十一月,新的也从十一月开始:

Department Month   Sales
OldDept      Oct   $ x
             Nov   $ y
           Sum     $ (x+y)
NewDept            $ z
             Dec   $ i
           Sum     $ (z+i)
Overall sum          $ (x+y+z+i)

据我所知,这是 Microsoft Reporting Services 中的错误,对吗?还是我只是忽略了一些选项?

否则,要解决此问题,我认为最好的解决方案是让 DLL 认为月份名称不同 - 但它们对用户而言不应看起来不同。所以我想,在月份名称中添加不同数量的 whitespace 怎么样?因为我认为 whitespace 会被用来计算列宽,所以每一行的 whitespace 不应该太多。我将不得不在每隔一行添加一个 space 字符。我怎样才能在 SQL 服务器中实现 THAT

我试图重现你的问题。

这是我的示例数据:

这是 table 在 SSRS 设计器中的样子:

这是输出:

它看起来很适合我。也许你在设计器中弄错了table?