2016-04-26 51 views
2

我試圖從我的16臺機器上看出產生最多廢物的最高機器。經過很多努力,我已經完成了這項工作。在同一張表中劃分

現在我必須做最高的問題前5名。並且這些問題在數據庫中列在同一目錄中:

我該怎麼做?

我使用SQL Server Report Builder。

我無法添加圖片,我會盡力去做這樣:

Date      CounterName     calculationUnitsInitial  
    2016-04-26 00:00:00.000 Prod      6221 
    2016-04-26 00:00:00.000 Bad       0 
    2016-04-26 00:00:00.000 ba   0 
    2016-04-26 00:00:00.000 ba  0 
    2016-04-26 00:00:00.000 Ausg  6  
    2016-04-26 00:00:00.000 Au   0 
    2016-04-26 00:00:00.000 Bad       125  
    2016-04-26 00:00:00.000 Aus       8 
    2016-04-26 00:00:00.000 Band position    0 
    2016-04-26 00:00:00.000 Fe    0 
    2016-04-26 00:00:00.000 Fe    0 
    2016-04-26 00:00:00.000 Hu      124  
    2016-04-26 00:00:00.000 S      0 
    2016-04-26 00:00:00.000 Dr    0 
    2016-04-26 00:00:00.000 H   4 
+0

您能否給我們提供您正在使用的表格結構,然後我們能夠提供更好的幫助。 –

+0

是的,我確定我會這樣做。 –

+1

我現在編輯了我的問題 –

回答

1

因此,我們需要的在最惡劣的工作機器按頻率的降序的問題的列表。我會將您的真正大查詢設置爲數據集,並使用它來填充名爲Machine的隱藏參數的默認值。我們還需要兩個參數DateFromDateTo設置爲您感興趣的日期範圍內的默認值

然後你的問題的選擇很簡單:。

SELECT CounterName, COUNT(*) AS Problems 
FROM Problems 
WHERE Machine = @Machine 
    AND ProblemDate >= @DateFrom AND ProblemDate <= @DateTo 
GROUP BY CounterName 
ORDER BY COUNT(*) DESC 

現在我們有一些不錯列表按發生問題的順序排列該機器的各類問題。我們稱之爲數據集​​

將表格添加到包含兩列的報表中。第一列的表達式如下:

=Fields!Problems.Value/SUM(Fields!Problems.Value, "Problems") 

這會將該CounterName的問題數除以數據集問題中的整個問題數。將該單元格的Format屬性設置爲P1,以百分比顯示一位小數。

第二欄只是字段CounterName

+0

謝謝你的幫助。我會嘗試 –