动态行求和SSRS中的动态列?

时间:2018-02-11 00:46:31

标签: sql-server reporting-services

所以我有一个非常简单的视图,看起来像这样:

Location    Month       DelRec      Warehouse_Number    Code    Value
Canada      November    Deliveries  Warehouse1          C       11041.2
Canada      November    Deliveries  Warehouse 2         C       0
Canada      November    Receipts    Warehouse 3         C       0
USA         November    Receipts    Warehouse_10        H       2543.2

最终,我想要创建的是SSRS中的矩阵,它使用“代码”作为动态列名,并通过DelRec和Location进行分组(扩展可用于该分组的每个代码的列数)。够容易吧?看起来像这样:

simple matrix

现在我要做的下一步是对这些值进行一些条件求和,这让我受阻。特别是,例如,在下面的数据中,对于加拿大,交货需要一起总结(仓库1和仓库2),然后从收货中减去这两个总额(在这种情况下,只是仓库3)。表面上看,这看起来像这样:

with_total

问题是,我无法弄清楚如何进行条件求和(即总和交付并从收据总和中减去它们),特别是涉及动态列时(因为我们不知道仓库数量可能来自何处)在未来的数据中。)

此外,我实际上需要一个具有总交付额和总收据的列,这使我更加困难。

有人知道怎么做吗?结果应如下所示:

enter image description here

我创建了a pastebin 如果有人真的想尝试这样做,可以使用一些有代表性的SQL数据进行插入。

1 个答案:

答案 0 :(得分:2)

据我所知,“收据”是信用额度,可以视为正数,“交付”是借方,可以视为负数。要获得正确的总数,您可以使用

替换矩阵右下角的Sum表达式
=Sum(IIF(Fields!DelRec.Value="Receipts",Fields!Value.Value,-1 * Fields!Value.Value))

要获得交付和收据的总计行,您需要右键单击矩阵中的Warehouse_Number,然后单击Add Total,然后单击After。

Add total to Warehouse Number

或者,您可以右键单击行组中的Warehouse_Number并从那里添加总计。

矩阵现在看起来应该是这样的

enter image description here

报告现在应该是这样的

Report with both totals

右键单击矩阵中的代码然后“添加总计” - > “After”将Row Totals添加为新列。请注意,这将仅按位置“收货”或“交货”,因为报表已分组,然后是DelRec,然后是仓库。您可以通过在矩阵底部添加额外的行来获得收据总计,或者在我看来更好的是另一个仅由DelRec分组来计算DelRec Grand Totals的表。