ユーザーごとの統計情報を含むテーブルがあります。
TABLE Stats
user varchar(50)
callsdate datetime
howmany INT
また、データの内容に応じて、列見出しが2012年7月、2012年8月、2012年9月などになる合計を含むTablixを表示する必要があります。
ユーザーごとの統計情報を含むテーブルがあります。
TABLE Stats
user varchar(50)
callsdate datetime
howmany INT
また、データの内容に応じて、列見出しが2012年7月、2012年8月、2012年9月などになる合計を含むTablixを表示する必要があります。
最終的には、月と年を連結したレポートレベルでグループを設定する必要があります。
これは、クエリレベルで次のように実行できます。
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))
このデータセットをレポートレベルで使用するmonthYear
と、Tablixの必要に応じて列を簡単にグループ化できます。
正しい順序を取得する際に問題が発生します。別の計算列をデータセットに追加します。
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
。
クエリレベルで集計できない場合は、レポートの式を使用して、たとえばデータセットの計算列として、同様のことを行うことができます。
月年:=CDate(Fields!callsdate.Value).ToString("MMM-yyyy")
monthYearOrder:=CDate(Fields!callsdate.Value).ToString("yyyyMM")