Reporting services 如何在SSRS 2008 R2中以Tablix列的形式计算每年每月的总计
我有一个表,每个用户都有统计信息Reporting services 如何在SSRS 2008 R2中以Tablix列的形式计算每年每月的总计,reporting-services,ssrs-2008,ssrs-tablix,Reporting Services,Ssrs 2008,Ssrs Tablix,我有一个表,每个用户都有统计信息 TABLE Stats user varchar(50) callsdate datetime howmany INT 我需要显示一个表格,其中列标题应为2012年7月、2012年8月、2012年9月等,具体取决于数据中的内容。最终,您需要在报告级别设置一个组,该组是月和年的串联 您可以在查询级别执行以下操作: select [user] , monthYear = left(datename(mm, callsdate), 3) + '-' + ca
TABLE Stats
user varchar(50)
callsdate datetime
howmany INT
我需要显示一个表格,其中列标题应为2012年7月、2012年8月、2012年9月等,具体取决于数据中的内容。最终,您需要在报告级别设置一个组,该组是月和年的串联 您可以在查询级别执行以下操作:
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
中的文本
如果无法在查询级别进行聚合,则可以对报表中的表达式执行类似操作,例如作为数据集中的计算列:
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)
monthYear:=CDate(Fields!callsdate.Value).ToString(“MMM yyyy”)
monthYearOrder:
=CDate(Fields!callsdate.Value)。ToString(“yyyyMM”)
非常感谢。我需要一些时间来测试这个!最有可能在周一,因为我的老板要我现在做其他事情。我会随时通知你的,但我还是没机会告诉你。我会的。在接下来的几天内,我将无法对此进行研究,但(a)我认为你的答案是正确的,(b)至少你投入了大量的工作。谢谢。你能进入字段的属性,然后按你想要的格式编号并设置为日期吗?我错过什么了吗?