我有一个包含每个用户的统计信息的表格,比如说
TABLE Stats
user varchar(50)
callsdate datetime
howmany INT
我需要显示一个 Tablix,其中列标题应该是 Jul-2012、Aug-2012、Sep-2012 等,具体取决于数据中的内容。
我有一个包含每个用户的统计信息的表格,比如说
TABLE Stats
user varchar(50)
callsdate datetime
howmany INT
我需要显示一个 Tablix,其中列标题应该是 Jul-2012、Aug-2012、Sep-2012 等,具体取决于数据中的内容。
最终,您需要在报告级别设置一个组,该组是月份和年份的串联。
您可以在查询级别执行此操作,例如:
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")
月年顺序:=CDate(Fields!callsdate.Value).ToString("yyyyMM")