SSRS显示一个用户的%vs所有用户%。我需要多少个参数?

时间:2013-11-01 16:50:21

标签: reporting-services reportingservices-2005

我有几个数据集。一个由用户列表和其他人组成,为该用户生成各种度量的分子和分母

数据集:

users - to query a list of users for the parameter
measure1 - returns a numerator & denominator "where user_id in (@user)"
measure2 - returns a numerator & denominator "where user_id in (@user)"
measure3 - ...etc
measure4 - ...etc
measure5 - ...etc

参数(用于所有措施)     @user查询用户数据集

期望的输出:

Suzy

measure # | Suzy %    | all users %
measure 1 |   85 %    |    50 %
measure 2 |   35 %    |    75 %
measure 3...etc
measure 4...etc
measure 5...etc

到目前为止,我可以为每个度量计算一个用户的%,或者为每个度量计算所有用户的%,但不能同时计算两者。


我是怎么做到的: 我在这里添加我的答案是因为我让@ Ian-Preston给予我思考。

因此,在我的情况下,最大的挑战是如何呈现信息的限制。 所有的查询逻辑工作只是我努力的演示问题。 报告本身包含几个数据集,每个数据集都传递相同的参数并吐出自己的分子和数据。分母,然后我创建%(分子/分母)。

具有挑战性的部分是必须过滤掉一个用户的%,但在旁边显示所有用户%。

我的解决方案是SSRS中的一课 - 在SQL中尽可能多地执行此操作,因此您无需在SSRS中执行此操作。

对于我在最后一行中拉出的每一项措施。

而不是

select user_id
,case when ... then 1 else 0 end as num
,case when ... then 1 else 0 end as denom
group by user_id

我做了

select isnull(user_id, 'total') as user_id
,case when ... then 1 else 0 end as num
,case when ... then 1 else 0 end as denom
from ...
where ...
group by user_id with rollup

这给了我每个测量查询末尾的总计行

然后我有2个参数 - @user多值隐藏参数,来自用户数据集查询的默认值。 @filter参数,来自用户数据集查询的可用值

接下来,我用分子/分母计算创建了2个表。一个在@user = total上过滤,另一个在@filter上过滤。 我删除了标题&页脚,只保留了一个单元格,因为我想要上面描述的格式。

1 个答案:

答案 0 :(得分:2)

我假设您正在使用一个表达式的用户:

=Fields!Numerator.Value / Fields!Denominator.Value

对于所有用户,您可以使用如下表达式:

=Fields!Numerator.Value / Sum(Fields!Denominator.Value, "measure1")

在计算分母时,这将考虑数据集中的所有行。