2013-11-01 39 views
0

我有幾個數據集。一個由......組成用戶和其他用戶產生一個分子和分母的各種措施,爲用戶SSRS顯示一個用戶的%與所有用戶的百分比。我需要多少個參數?

數據集的列表:

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 

到目前爲止,我可以計算出一個用戶的%每項措施或所有用戶%,但不是兩者同時。


我怎麼做的: 我在這裏將我的答案,因爲我給@伊恩 - 普萊斯頓信貸讓我思考。

因此,在我的情況下,最大的挑戰是信息如何呈現的約束。與所有的查詢邏輯工作,這只是一個演示文稿,我掙扎着。 報告本身包含幾個數據集,每個數據集都通過相同的參數並吐出他們自己的分子&分母,然後我創建%(分子/分母)。

具有挑戰性的部分是不得不篩選出一個用戶的%,但在旁邊顯示一個全部用戶%。

我的解決方案是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上過濾。 我刪除了頁眉&頁腳,並且只保留了一個單元格,因爲我想要上面描述的格式。

回答

2

我假設你使用的是像一個表達式一個用戶:

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

對於所有用戶,你可以使用這樣的表達式:

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

這將考慮在數據集時,所有的行計算分母。

+0

我明白你在說什麼,但沿着這篇報道的某處有些東西是棘手的。 例如 = Sum(Fields!num.Value,「measure1」)/ Sum(Fields!denom.Value,「measure1」) 適用於** one **用戶,因爲需要指定measure1的範圍因爲它知道哪個數據集 – jawz101

+0

like,因爲我的參數只是從用戶數據集中指定一個用戶,它將如何知道爲該數據集中的所有用戶重新運行計算來計算總體%? – jawz101

+0

你在(@user)中使用''的事實意味着你選擇了多個用戶......如果你只返回一個用戶的信息,你就會陷入困境 - 你最好的選擇是包括總值作爲數據集中的額外列,並使用'= Fields!Numerator.Value/Fields!AllUsersDenominator.Value'。 –