SSRS-根据参数值对报告列进行排序

时间:2018-11-13 19:19:31

标签: reporting-services

我需要根据输入的日期参数对列进行排序,该参数是前一年的第一个月,并增加到输入的日期(为12个月)。例如,参数值输入'03/31/2018',它将首先显示'Apr 2017',然后显示'May 2017',...依此类推,最后一列为'Mar 2018'`。谢谢!

2 个答案:

答案 0 :(得分:0)

首先,下次一定要发布您到目前为止尝试过的内容以及为什么它不起作用。这样,人们会看到您在其中付出了一些努力,他们将很乐意为您提供帮助。

第二步转到您的 Tablix属性>排序>添加并使用排序表达式:

=CDate(Fields!YourDate.Value)

然后转到您的 Tablix属性>过滤器>添加,然后添加以下两个过滤器:

'Expression1
=DateSerial(Year(DateAdd("yyyy", -1, CDate(Parameters!YourParameter.Value))), Month(CDate(Parameters!YourParameter.Value)), "1").AddMonths(1)

'Format1
=Date/Time

'Operator1
>

'Value1
=CDate(Fields!YourDate.Value)

第二个过滤器:

'Expression2
=DateSerial(Year(DateAdd("yyyy", -1, CDate(Parameters!YourParameter.Value))), Month(CDate(CDate(Parameters!YourParameter.Value))), "1").AddMonths(13)

'Format2
=Date/Time

'Operator2
<

'Value2
=CDate(Fields!YourDate.Value)

答案 1 :(得分:0)

我修改了我的数据集,以包含另一个字段“ IndexColumn”,该字段以指定的顺序排序,从上个月(2017年4月)的“ A”开始:

=SWITCH(Fields!Indexcolumn.Value = “A”, Format(DateAdd("m", -11, CDate(Parameters!AsOfDate.Value)),"MMM yyyy"),
Fields!Indexcolumn.Value = “B”, Format(DateAdd("m", -10, CDate(Parameters!AsOfDate.Value)),"MMM yyyy"),
Fields!Indexcolumn.Value = “C”, Format(DateAdd("m", -9, CDate(Parameters!AsOfDate.Value)),"MMM yyyy"),
Fields!Indexcolumn.Value = “D”, Format(DateAdd("m", -8, CDate(Parameters!AsOfDate.Value)),"MMM yyyy"),
Fields!Indexcolumn.Value = “E”, Format(DateAdd("m", -7, CDate(Parameters!AsOfDate.Value)),"MMM yyyy"),
Fields!Indexcolumn.Value = “F”, Format(DateAdd("m", -6, CDate(Parameters!AsOfDate.Value)),"MMM yyyy"),
Fields!Indexcolumn.Value = “G”, Format(DateAdd("m", -5, CDate(Parameters!AsOfDate.Value)),"MMM yyyy"),
Fields!Indexcolumn.Value = “H”, Format(DateAdd("m", -4, CDate(Parameters!AsOfDate.Value)),"MMM yyyy"),
Fields!Indexcolumn.Value = “I”, Format(DateAdd("m", -3, CDate(Parameters!AsOfDate.Value)),"MMM yyyy"),
Fields!Indexcolumn.Value = “J”, Format(DateAdd("m", -2, CDate(Parameters!AsOfDate.Value)),"MMM yyyy"),
Fields!Indexcolumn.Value = “L”, Format(DateAdd("m", -1, CDate(Parameters!AsOfDate.Value)),"MMM yyyy"),
Fields!Indexcolumn.Value = “M”, Format(DateAdd("m", 1, CDate(Parameters!AsOfDate.Value)),"MMM yyyy")

不能忘记可能弹出的错误,需要解决:“ The Value expression for the text box ‘Textbox9’ refers directly to the field ‘Indexcolumn’ without specifying a dataset aggregate. When the report contains multiple datasets, field references outside of a data region must be contained within aggregate functions which specify a dataset scope.。”