【问题标题】:Months represented in wrong order in SSRS ReportSSRS 报告中的月份顺序错误
【发布时间】:2020-07-02 21:07:17
【问题描述】:

我目前正在运行 SSRS 报告,其中一个列标题称为 [MonthName] - 该报告目前正在生成按字母顺序排列月份的报告,例如 4 月、8 月、12 月等

如何让报告按 1 月、2 月、3 月等的顺序排列

我试过 ORDER BY MonthName 但这似乎并没有给我带来任何快乐,请有人指导我朝着正确的方向前进

非常感谢 丹

【问题讨论】:

  • 您能否发布您的查询或示例数据。
  • 这里是查询:SELECT dt, WeekCommencing, Week, WeekofMonth, DayofWeek, MonthName, year, Site, Team, SubTeam, Client, Scheme,Calls_Offered, Calls_Answered FROM [LB ODS].WorkCalendarV2Emails WHERE (站点 IN (@Site)) AND (Data_Label IN (@DataLabel)) 和 (dt >= @startdate) AND (dt
  • 我建议你在查询中 ORDER BY 然后删除排序 SSRS 我不知道你的数据,但我从你的列名中读取,我认为你应该 ORDER BY DATEPART(MM,dt) - 假设 dt 是日期时间值

标签: visual-studio reporting-services


【解决方案1】:

在排序属性上使用这个表达式。我假设您的数据是完整的月份名称。

=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,然后按 Monthnumber 对 Tablix 进行排序。

【讨论】:

  • 感谢 Aldrim,我已将它放在我的 tablix 属性的排序部分,但没有变化,它仍然按字母顺序排列 谢谢
  • 您是否尝试将其放在“行组”下的“详细信息”部分?它位于设计器的底部。您应该选择 Tablix 以查看此内容。
  • 也尝试从您的查询中删除 ORDER by
【解决方案2】:

在基础查询中或作为计算列向数据集添加月份的数字表示。这样可以避免冗长的 case/switch 语句,这些语句会使您的代码难以阅读。

SQL

select datepart(month, (@month_name + ' 01 1900')) 'month_number'

计算列表达式

=Month(CDate(Fields!month_name.Value.ToString + " 01 1900"))

【讨论】:

    【解决方案3】:

    如果 [dt] 字段是 DATETIME 或 DATE 字段,只需按以下方式排序:

    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
    

    【讨论】:

      【解决方案4】:

      @丹-特蕾西

      对于按时间顺序排列的月份,请将此子句添加到您的 select 语句中: Month(SaleDate) 作为 MonthSort

      对于财政年度订单,将此子句添加到您的选择语句中: CASE WHEN Month(SaleDate)

      然后在 SSRS 转到底部的列组,选择下拉列表,然后在“排序依据”中从查询中选择 MonthSort 列

      【讨论】:

        猜你喜欢
        • 2018-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多