2010-11-15 72 views
1

我有一個SSRS報告,我試圖有條件地總結行。我有:使用SSRS對錶格中的項目進行分組和彙總

11/15/2010 12:14:43 AM |當前匯率|當前速度|金額在使用分鐘(速度*費率/ 60) 等等等等

我想補充一點,在一個小時內發生的所有行,讓我的報告將顯示:

11/15/2010 | 12 AM - 1 AM |用於該小時的金額(比如7加侖)

我無法找到任何地方如何有條件地總結每小時一行,或者如何讓我的報告說出上述內容。

預先感謝您!

+0

您正在試圖在報告中執行此操作,與SQL語句? – 2010-11-15 20:43:20

+0

是的,在報告中。我希望使用Expression功能來完成此操作。 – Sarah 2010-11-15 20:45:00

+0

我同意OMG Ponies,這在SQL中會更簡單,然後將結果呈現給報告(可能也會更快)。你說你是「......希望使用表達功能......」,你能解釋爲什麼你更喜歡這種方法嗎? – Tony 2010-11-15 20:49:35

回答

0

使用下表來進行測試:

CREATE TABLE `log` (
    `entry_date` datetime DEFAULT NULL, 
    `amount_used` int(11) DEFAULT NULL 
) 

隨着一些測試數據:

entry_date   amount_used 
2010-11-01 10:00:00, 3 
2010-11-01 10:30:00, 1 
2010-11-01 11:00:00, 6 

使用此查詢來獲取使用的日期,時間範圍和總量:

SELECT DATE(entry_date) AS entry_date, 
    CONCAT_WS('-',CONVERT(MIN(HOUR(entry_date)), char(2)), CONVERT(MAX(HOUR(entry_date)),CHAR(2))) hours, 
    SUM(amount_used) amount_used 
FROM (
    SELECT entry_date, SUM(amount_used) AS amount_used 
    FROM log 
    GROUP BY DATE(entry_date), HOUR(entry_date) 
    ) T; 

所有的CONCAT/CONVERT的東西只是爲了得到在特定的一天小時的範圍,作爲一個stri NG。這是結果:

entry_date hours amount_used 
2010-11-01, 10-11, 10 
+0

非常感謝Tony,這對我很有幫助! – Sarah 2010-11-15 21:58:41

+0

我做了一個新的數據集並粘貼查詢,將名稱更改爲我的數據庫中的名稱。但是,當我嘗試執行查詢時,我得到'DATE'不是公認的內置函數名稱。任何想法爲什麼這可能是? – Sarah 2010-11-15 22:12:39

+0

您使用SQL Server嗎?我目前只有MYSQL可用。要更改爲T-SQL,請用DATEPART替換HOUR函數(HOUR,entry_date)。要在T-SQL中只獲得DATETIME的日期,你必須使用類似下面的方法做一個非常討厭的破解:CAST(FLOOR(CAST(GETDATE()AS FLOAT))AS DATETIME) – Tony 2010-11-15 22:23:14