比较矩阵的最后两个总和的简单指标
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,我会让箭头向下。
我不确定我应该将哪个值放入 Indicator 的 Value 属性 以获得最后一个值并将其与倒数第二个值进行比较...
感谢您的帮助。
我不确定您是否可以引用列组中的特定索引。
如果您可以更改 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.. 代码,但这取决于您。
希望对您有所帮助。
我有以下矩阵显示最近 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,我会让箭头向下。
我不确定我应该将哪个值放入 Indicator 的 Value 属性 以获得最后一个值并将其与倒数第二个值进行比较...
感谢您的帮助。
我不确定您是否可以引用列组中的特定索引。
如果您可以更改 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.. 代码,但这取决于您。
希望对您有所帮助。