0

ユーザーごとの統計情報を含むテーブルがあります。

TABLE Stats
user varchar(50)
callsdate datetime
howmany INT

また、データの内容に応じて、列見出しが2012年7月、2012年8月、2012年9月などになる合計を含むTablixを表示する必要があります。

4

1 に答える 1

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))

このデータセットをレポートレベルで使用する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")

于 2012-12-21T16:11:13.360 に答える