2016-11-22 39 views
1

我剛開始學習SSRS,所以原諒我,如果這是一個簡單的問題,但我似乎無法找到合適的答案......我有一個數據集與服務票據,查詢的東西像這樣:SSRS group by datediff for Pie chart

SELECT service_tickets, Company_id, Urgency, Date_Entered_UTC, Date_Closed_UTC 
    CASE when servicetype = '' then 'Other' else servicetype end as ServiceType, 
    CASE when servicesubtype = '' then 'Other' else servicesubtype end as ServiceSubType, 
FROM v_Service 
WHERE Hours_Actual >0 

我想組的這個結果通過使用date_entered字段季度餅圖(並且最終將其顯示爲登錄Q1總即所有的票的40%的百分比,第二季度登錄的所有門票中的20%,但我後面會擔心)。下面的查詢給了我正確的計數:

SELECT count(service_tickets) as Tickets 
FROM v_service 
    WHERE ... 
GROUP BY DATEDIFF(qq, date_entered, getdate()) 

然而,當我使用的數據集在同一份報告中,我需要把所有的領域,因爲它們是在第一個查詢幾個圖形。所以我想弄清楚如何告訴SSRS將來自第一個數據集的結果進行分組,從而給出第二個查詢的結果。本質上,我如何使用原始數據集將group by datediff翻譯成餅圖?

+0

沒有答案,但你確定你想用datediff()而不是datepart()嗎?第一個會計算當前日期的距離,第二個會給你實際的季度...... – SMM

回答

0

我實際上發現,最簡單的方法是將圖表作爲子報表插入,從而創建自己的數據集,而不受現有圖表中使用的數據集的限制。

0

最簡單的方法是對SSRS表達式進行分組。在這種情況下:

=DATEDIFF(DateInterval.Quarter, Fields!date_entered.Value, Now()) 

但是,將該表達式作爲計算列添加到數據集中可能會更乾淨。打開數據集屬性,在左邊選擇「字段」,然後單擊「添加」...「計算列」。然後命名您的字段並在源框中添加表達式。

但是,您應該可以將其作爲附加列添加到SQL查詢中,而不會影響報表上的其他項目。只需將DATEDIFF(qq, date_entered, GETDATE()) AS Quarters_since_entered添加到SELECT子句。