2013-04-02 67 views
0

使用SSRS 2008,我需要將銷售達到25天,並且需要在折線圖中反映相同的情況。因此X軸包含日期差異,例如。 1月1日 - 25日13日,1月26日 - 2月19日13日等等,直到標量@endate ...,y軸代表通信銷售達到。我已經分組了幾個星期和幾個月,並意識到這一點,但當它的25天差異,我有點困惑。任何暗示,將不勝感激。謝謝。如何在SQL中按不同日期範圍對記錄進行分組?

回答

2

爲了在報告級別執行此操作,您可以創建一個計算列來對各種日期進行分組。我用下面的表達式:

=DateAdd(DateInterval.Day 
    , 25 * Floor 
    (
     (DateDiff(DateInterval.Day, CDate("01-Jan-2013"), Fields!date.Value) 
    /25) 
    ) 
    , CDate("01-Jan-2013")) 

基本上,它的計算天數爲自今年開始每個日期,除以25並四捨五入,並使用這個新的數字來計算的起始日期時期。

我已經在年份日期開始時進行硬編碼,但您可以輕鬆地製作此參數或表達式。

這爲一些樣本數據,結果如下:

你可以看到他們分組日期值如預期。基於此,您可以輕鬆地將它們組合在圖表中。評論後

編輯

也許你可以仔細檢查你的表情?我認爲在數據集中設置一個計算字段會比較容易,而不是直接在圖表中進行 - 然後很容易將結果放在表格中查看是否一切正常。我已經擴展了上面的例子,基於相同的表達式。我已經增加了兩個計算字段,一個用於組結束日期:

=DateAdd(DateInterval.Day, 24, Fields!groupDate.Value) 

而且一個創造一個很好的格式化組標籤:

=Format(Fields!groupDate.Value, "dd-MMM") 
    & " - " 
    & Format(Fields!groupDateEnd.Value, "dd-MMM") 

在此基礎上,我添加了一個圖表以下類別/系列:

enter image description here

最終結果,分組爲必需的:

enter image description here

或者,您也可以在數據庫級別執行此操作,假設這是您的數據源;只需將分組表達式等效爲T-SQL:

with groupDates as 
(
    select * 
    , groupDate = dateadd(dd, 25 * (datediff(dd, '01-jan-2013', date)/25), '01-jan-2013') 
    from departments 
) 
select department 
    , groupDate 
    , groupDateEnd = dateadd(dd, 24, groupDate) 
    , groupValue = sum(value) 
from groupDates 
group by department 
    , groupDate 
order by department 

SQL Fiddle with demo

+0

嗨伊恩,謝謝你的回覆。解釋清楚,但不起作用。我在「類別」組的SUM VALUES和以上表達式下添加了銷售,圖中沒有任何顯示。而不是添加表達式,是否可以將查詢寫入數據集? PS - 我在這裏按部門分組,我的參數是開始日期,結束日期和部門。希望我清楚。提前致謝。 – Jeff

+0

也許你可以仔細檢查你的表情?我添加了更多詳細信息,顯示報告中的分組工作。如果它不適合你,我建議將分組創建爲計算字段,將數據顯示在表格中,並查看是否顯示錯誤。或者,我創建了一個示例查詢,如果您想在數據庫級別執行分組,可以使用該查詢。 –