我正在运行SSRS报告,其中一个列标题被称为[MonthName] - 报告当前正按照字母顺序生成报告,因此4月,8月,十二月等月份在SSRS报告中以错误顺序表示
我怎样才能得到的报告是在一月,二月,三月等
我已经试过ORDER BY MONTHNAME但这似乎并没有给我任何喜悦的顺序,可能有人给我请向正确的方向转向
非常感谢 丹
我正在运行SSRS报告,其中一个列标题被称为[MonthName] - 报告当前正按照字母顺序生成报告,因此4月,8月,十二月等月份在SSRS报告中以错误顺序表示
我怎样才能得到的报告是在一月,二月,三月等
我已经试过ORDER BY MONTHNAME但这似乎并没有给我任何喜悦的顺序,可能有人给我请向正确的方向转向
非常感谢 丹
在排序属性上使用此表达式。我假设你的数据是完整的月份名称。
=SWITCH(Fields!MonthName.Value="January",1,
Fields!MonthName.Value="February",2,
Fields!MonthName.Value="March",3,
Fields!MonthName.Value="April",4,
Fields!MonthName.Value="May",5,
Fields!MonthName.Value="June",6,
Fields!MonthName.Value="July",7,
Fields!MonthName.Value="August",8,
Fields!MonthName.Value="September",9,
Fields!MonthName.Value="October",10,
Fields!MonthName.Value="November",11,
Fields!MonthName.Value="December",12)
编辑:增加了另一种解决方案。
另一种方法是将Monthnumber字段添加到您的数据集。在SQL中使用大小写语句或在数据集属性>字段>添加>中输入上面的表达式。将该字段命名为Monthnumber,然后按月份编号对Tablix进行排序。
在基础查询中将月份的数字表示添加到数据集,或者将其作为计算列。这避免了冗长的大小写/开关语句,这会使您的代码难以阅读。
SQL
select datepart(month, (@month_name + ' 01 1900')) 'month_number'
计算列表达式
=Month(CDate(Fields!month_name.Value.ToString + " 01 1900"))
如果[DT]字段是一个DATETIME或DATE域,只是ORDER BY是:
SELECT dt
, WeekCommencing
, [Week]
, WeekofMonth
, [DayofWeek]
, [MonthName]
, [year]
, [Site]
, Team
, SubTeam
, Client
, Scheme
, Calls_Offered
, Calls_Answered
FROM [LB ODS].WorkCalendarV2Emails
WHERE (Site IN (@Site))
AND (Data_Label IN (@DataLabel))
AND (dt >= @startdate)
AND (dt <= @enddate)
ORDER BY dt
你可以发表你的查询或采样数据。 –
下面是该查询: SELECT DT,WeekCommencing,周,WeekofMonth,星期,月名将,今年,网站,小组,工作小组,客户,流程,Calls_Offered,Calls_Answered FROM [LB ODS] .WorkCalendarV2Emails WHERE(网站( @Site))AND(Data_Label IN(@DataLabel))和(dt> = @stdate)AND(dt <= @enddate) –
我建议你在查询中使用ORDER BY,然后在SSRS上删除排序我不知道你的数据,但是我阅读你的专栏名称,我认为你应该订购BY DATEPART(MM,DT) - 假设dt是日期时间值 –