0

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

数据集:

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 上过滤。我删除了页眉和页脚,只保留了一个单元格,因为我想要上面描述的格式。

4

1 回答 1

2

我假设您正在使用如下表达式:

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

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

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

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

于 2013-11-01T17:02:47.983 回答