我有几个数据集。一个由用户列表和其他人组成,为该用户生成各种度量的分子和分母
数据集:
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上过滤。 我删除了标题&页脚,只保留了一个单元格,因为我想要上面描述的格式。
答案 0 :(得分:2)
我假设您正在使用一个表达式的用户:
=Fields!Numerator.Value / Fields!Denominator.Value
对于所有用户,您可以使用如下表达式:
=Fields!Numerator.Value / Sum(Fields!Denominator.Value, "measure1")
在计算分母时,这将考虑数据集中的所有行。