比较矩阵的最后两个总和的简单指标

Simple indicator comparing last two sums of a Matrix

我有以下矩阵显示最近 3 天的数据:

date     05/07/2015   06/07/20145   07/07/215
number   151          42            84

每一列中的字段number是这样计算的:

=Sum(Fields!number.Value)

我想做的是一个简单的指标(向上或向下的箭头),只需比较矩阵的最后两个值。

ie 在这种情况下:84 > 42,我会有一个箭头向上.

如果明天我有这个:

date     06/07/2015   07/07/20145   08/07/215
number   42           84            35

35 < 84,我会让箭头向下

我不确定我应该将哪个值放入 IndicatorValue 属性 以获得最后一个值并将其与倒数第二个值进行比较...

感谢您的帮助。

我不确定您是否可以引用列组中的特定索引。

如果您可以更改 SQL 并添加一个始终为要比较的值提供相同行号的行号,那么您可以执行以下操作。

在此示例中,我构建了一个简单的 table,然后按 colGroup(这将是您的日期)对其进行分组,并添加了基于 colGroup 的行号。 注意:ROW_NUMBER函数的ORDER子句设置为DESC,这样无论显示多少天,报表总能比较RowNum 1和RowNum 2

首先,创建一个包含单个矩阵和单个数据集的报表。

查询数据集:

CREATE TABLE  #t (colGroup char(1), number int)

INSERT INTO #t
VALUES 
('A', 12),('A', 13),('A', 14)
, ('B', 15),('B', 16),('B', 17)
, ('C', 18),('C', 19),('C', 20)

SELECT 
    *
    , ROW_NUMBER() OVER(ORDER BY ColGroup DESC) as RowNum
    FROM
        (
        SELECT 
            colGroup, SUM(number) as TotalNumber
          FROM #t
          GROUP BY #t.colGroup
        ) x

现在创建一个包含单个矩阵的报表。 将 colGroup 字段拖到 Columns 区域 将 TotalNumber 字段拖到数据区域

现在我们将添加两列,一列显示最后两个值之间的实际差异(仅供说明),另一列显示显示 >、= 或 <

的指标

Right-Click 包含 [colGroup] 的列的 header 并执行 "Insert column" 然后 "Outside Group - Right"

重复创建两列

在新列的第一列中,将表达式设置为:

=
SUM(IIF(Fields!RowNum.Value=1, Fields!TotalNumber.Value, 0))-
SUM(IIF(Fields!RowNum.Value=2, Fields!TotalNumber.Value, 0))

在第二个中,将表达式设置为:

=
IIF(
    SUM(IIF(Fields!RowNum.Value=1, Fields!TotalNumber.Value, 0))-
    SUM(IIF(Fields!RowNum.Value=2, Fields!TotalNumber.Value, 0))>0 ,
    ">" ,
    IIF(
        SUM(IIF(Fields!RowNum.Value=1, Fields!TotalNumber.Value, 0))-
        SUM(IIF(Fields!RowNum.Value=2, Fields!TotalNumber.Value, 0))=0 ,
        "=" ,
    "<")
)

运行 报告,你会得到你想要的输出(我希望!)

我还建议创建一个函数,这样您就不必一遍又一遍地重复 al SUM(IIF.. 代码,但这取决于您。

希望对您有所帮助。