2012-12-21 41 views
0

我有每個用戶的統計信息的表格,讓我們說如何,每年的本月合計爲Tablix的列在SSRS 2008 R2

TABLE Stats 
user varchar(50) 
callsdate datetime 
howmany INT 

,我需要表現出的Tablix有總計其中列標題應該是2012年7月,2012年8月,2012年9月等,具體取決於數據中的含義。

+0

你可以進入該領域的屬性,然後編號,並與你想要的格式設置爲日期?我錯過了什麼嗎? – Neil

回答

1

最終,您需要在報告級別設置一個月份和年份級聯的組。

你可以在查詢級別的東西像這樣做:

select 
    [user] 
    , monthYear = left(datename(mm, callsdate), 3) + '-' + cast(datepart(yy, callsdate) as char(4)) 
    , howmany 
from [Stats] 

甚至都凝聚在查詢級別,如果你可以:

select 
    [user] 
    , monthYear = left(datename(mm, callsdate), 3) + '-' + cast(datepart(yy, callsdate) as char(4)) 
    , howmany = sum(howmany) 
from [Stats] 
group by [user] 
    , monthYear = left(datename(mm, callsdate), 3) + '-' + cast(datepart(yy, callsdate) as char(4)) 

有了這個數據集在報告級別您可以根據您的Tablix的要求輕鬆將其分組在monthYear列中。

您會遇到正確訂購的問題;我將另一個計算列添加到數據集:

select 
    [user] 
    , monthYear = left(datename(mm, callsdate), 3) + '-' + cast(datepart(yy, callsdate) as char(4)) 
    , monthYearOrder = cast(datepart(yy, callsdate) as char(4)) + right('0' + cast(datepart(mm, callsdate) as char(2)), 2) 
    , howmany = sum(howmany) 
from [Stats] 
group by [user] 
    , monthYear = left(datename(mm, callsdate), 3) + '-' + cast(datepart(yy, callsdate) as char(4)) 
    , monthYearOrder = cast(datepart(yy, callsdate) as char(4)) + right('0' + cast(datepart(mm, callsdate) as char(2)), 2) 

這將允許你進行分組和順序由monthYearOrder,但仍使用該文本從monthYear

如果無法在查詢級別進行聚合,則可以對報表中的表達式進行類似處理,例如,作爲數據集中計算列:

monthYear:=CDate(Fields!callsdate.Value).ToString("MMM-yyyy")

monthYearOrder:=CDate(Fields!callsdate.Value).ToString("yyyyMM")

+0

非常感謝。我需要一些時間來測試這個!很可能在星期一,因爲我的老闆要我現在做點別的事情。會及時向大家發佈。 – Amarundo

+0

仍然沒有得到這個機會。我會。 – Amarundo

+0

這幾天不能工作,但(a)我想你的答案是正確的,(b)至少你做了很多工作。謝謝。 – Amarundo