2016-02-12 57 views
0

我SSRS報告像下面布爾參數顯示12H視圖或24小時視圖。爲了使報告適合單個屏幕,24小時報告需要每2小時分組。SSRS。如何分組?

  07:00 08:00 09:00 10:00 11:00 12:00 13:00 14:00 ... 
Line 1  25 30 24 26 25 25 30 30 ... 

      08:00 10:00 12:00 14:00 ... 
Line 1  55 50 50 60 ... 

DataSet的查詢是:

SELECT LineID 
    ,Hour 
    ,HourValue 
    ,Target 
FROM vwData 
ORDER BY LineID, CASE WHEN [Hour] > 6 THEN - 1 ELSE [Hour] END 

我怎樣才能做到這一點?

回答

1

這聲明你的位變量(當他們想要24小時的看法應該是真實的 - 要是有12個小時的假)

DECLARE @24Hour bit = 0 

SELECT CASE WHEN @24Hour = 0 
    THEN Hour 
    ELSE Hour + (Hour % 2) 
    END AS [HourGroup] 
    ,SUM(Target) AS [TargetTotal] 
FROM vwData 
GROUP BY CASE WHEN @24Hour = 0 
    THEN Hour 
    ELSE Hour + (Hour % 2) 
    END 

如果他們想要24小時來看,我們做出小時=小時+小時% 2.(7 = 8,8 = 8,9 = 10等等)。如果你有一個更復雜的查詢,我會建議閱讀交叉應用,但這是如此簡單,我認爲這就足夠了。通過分組可以確保聚集的REAL 7和REAL8小時記錄(這將如使用24小時視圖兩者,返回爲「8」)。如果你不這樣做你組的結果,你會得到兩個8點鐘紀錄 - 一個與真實7小時總,一個與現實8小時總。

編輯:

既然你不包括你的數據庫的架構,我猜「目標」是被累加的數值,但它可以很容易被「HourValue」。此外,我不知道爲什麼你需要LineID,所以我從我的答案中省略了它。但是如果它不準確,你可以輕鬆修改。將來,您應該提供一些示例數據和數據庫模式,以便其他人不必做出假設或猜測。

0

你可以添加一個計算的字段通過像這樣給出一個值:!`場Hour.Value +字段Hour.Value國防部2' ,然後組上的那場,使用參數來選擇組通過現場在報告中(您的新字段或實際小時值)。