2013-07-30 70 views
2

我一直在敲我的頭靠在了現在兩天大部分時間在牆上...SSRS集結骨料

我的情況是這樣的:

我有我已經瓜分分爲4組一個記錄在SSRS表中。它們是:

StartPeriod 
    --> Area 
    --> Job# 
     --> Details 

有問題的列是包含兩個不同記錄計數的列。一個是有錯誤的記錄數,另一個是這個組的記錄總數(這樣我可以運行一個百分比)。

例如:

在細節層次,我可能有4個錯誤的項目,並與6項,並總共有20條記錄是。這意味着記錄的總數是重複的,這意味着我不能總和這個數字,或者我會重複計算我的總記錄數。

StartPeriod - Area - Job# - Item - Errors - totalRecords 
January - 123 - Job3 - item1 - 4 -  20 
January - 123 - Job3 - item2 - 6 -  20 

我能解決這個問題的工作水平#,因爲我可以簡單地說MAX(num_records),以獲得正確的號碼....但是如果我想要聚合到地區級(或以上)我無法讓事情發揮作用。我不能做SUM(Max(num_records)),因爲這沒有任何意義,但是我在SQL中安排查詢時,它也不加起來。

我覺得這是一個相當普遍的問題,所以我不知道爲什麼我有這麼多麻煩。任何想法如何我可以解決這個問題?我希望我清楚地解釋自己。

PS。我使用SSRS 2008 R2

回答

0

嘗試這樣的事情您所查詢:

declare @totcount int 
select @totcount = sum(errors) from your_table 
select errors, errors/@totcount as [% of total] from your_table 

作爲區域:

declare @totcount int 
select @totcount = sum(errors) from your_table 
select area, sum(errors)/@totcount as [% of total] 
from your_table 
group by area 
+0

我以前試過這個,這讓我到了可以讓每個工作都正確的數字的地步,但是一旦我摺疊了這個組並且看看區域上的聚合......數字不會添加up – user2061929

+0

如果你想彙總總比率,忘記它,壞藥。看看我添加的第二個例子。 – Metaphor

+0

我不想彙總比率,我的問題是我擁有的'總數'並不是我的分組的最低級別。因此,我必須在「工作」級別消除該領域的聚合,然後在此之後進行總結。對不起,我知道這可能相當混亂......但我不確定是否有更好的方式來表達它。 – user2061929

2

更好地利用組,數據已經存在於您的查詢。

CountRows("Details") 
Sum(Errors, "Details") 

這是假定您在細節級別創建的組被稱爲「詳細信息」。

+0

我得到這個問題是,當我上升的層次結構這不起作用。我收到一個錯誤消息:「值表達式的範圍參數對集合函數無效」 – user2061929

+0

在每個組級別,您需要用「詳細信息」替換適用的組或「SSRS」中調用的「範圍」。在層次結構的頂部,您希望使用無範圍重載,這只是完全刪除範圍參數:CountRows()和Sum(Errors)。 –

+0

這讓我儘可能地達到#級別的工作水平......但是,現在我想將我到達的數字加在一起。例如:Job1具有正確的總數20,Job2具有正確的總數30,因此現在當我摺疊'Area'組時,我需要看到總數爲'50'。相反,我看到平均值正在繼續... – user2061929