按ssrs中的月份值排序

时间:2015-11-16 11:38:47

标签: sql reporting-services ssrs-2008 reportbuilder

我在SSRS中设置了一个非常尴尬的设置,包括自定义分组选项(即办公室,卖家,买家等)。例如,用户可以按年度分组项目,然后按月分组。报告的结果是:

Gr1. | Gr2.
2015 | April
2015 | August
2015 | February
2015 | January 
and so on... 

因此,这两列都是按字母顺序排列的,这对于所有自定义分组选项都很有效,但几个月 - 它们应该有自己的排序逻辑。我怎么能实现呢?

1 个答案:

答案 0 :(得分:1)

您应该尝试以其本机类型返回数据库中的所有信息。而不是将月份名称返回为“1月”,“2月”等,最好返回2015010120150201例如(或任何默认日期格式适用于您的环境)

然后,您可以更改报告中类型的格式。例如,设置要返回的单元格

=MonthName(Month(Fields!myDate.Value),False)

返回任意日期的月份名称。然后SSRS会知道何时订购如何以正确的顺序排列日期。

<强> ALTERNATIVE

假设您不想编辑返回数据的方式,您可以在报告后面的代码中使用Select语句手动提供月份的订单。

假设数据集

Month      Val
---------- ---
January     1
February    2
March       3

按月排序时,返回以下内容

enter image description here

相反,请在报告中插入以下代码(右键单击报告区域,选择“报告属性”,然后选择“代码”)

public function MonthNumber(MonthName AS String) AS Integer
    Dim MonthNum AS Integer = 0

    Select Case MonthName    
        Case "January"
            MonthNum = 1
        Case "February"
            MonthNum = 2
        Case "March"
            MonthNum = 3
    End Select

    return MonthNum
end function

然后将组属性设置为

=Code.MonthNumber(Fields!Month.Value)

给出以下结果

enter image description here

这是因为在订购集合时,它不是仅仅查看报告的名称,而是通过代码传递名称,这有效地告诉报告每个月分配哪个号码。然后按此值而不是月份名称对其进行排序。

希望这对你有用。如果您有任何进一步的问题,请告诉我。