SSRS类别分组

时间:2014-11-04 14:41:36

标签: reporting-services ssrs-grouping

我正在尝试在SSRS的条形图上创建分组类别。

我的查询是:

select distinct filedate, transaction_date, duedate, event_instance, event_name, eventstatus 
(datediff(DD, duedate, filedate)+1) as DaysAged,
-(DATEDIFF(WK, duedate, filedate) *2) 
-(case when DATENAME(DW, duedate) = 'sunday' then 1 else 0 end)
-(case when DATENAME(DW, FileDate) = 'saturday' then 1 else 0 end) as wkends
from MY TABLE where filedate =
    (select MAX(filedate) from MY TABLE)
and FileDate > duedate

在Reporting Services中,我创建了一个计算字段,将“Daysaged”减去“wkends”值。这给了我超过截止日期的天数。在我的条形图上,我希望有一个0-5天,5-10天,11-15天和16天以上的酒吧。

我已尝试过以下表达式,但我无法对图表上的列或条进行排序。

=IIf(Fields!Total_Aged_Days.Value<=5,"0-5 Days", IIF(Fields!Total_Aged_Days.Value<=10,"6-10 Days", IIF(Fields!Total_Aged_Days.Value<=15,"11-15 Days", "16+ Days")))

提前感谢您的帮助。我正在使用SSRS 2008。

1 个答案:

答案 0 :(得分:1)

你走在正确的轨道上。表达有意义;我稍微调整了一下以使用Switch

=Switch(
  Fields!Total_Aged_Days.Value<=5, "0-5 Days"
  , Fields!Total_Aged_Days.Value<=10, "6-10 Days"
  , Fields!Total_Aged_Days.Value<=15, "11-15 Days"
  , true, "16+ Days"
)

正如您所见,这将按字符串排序,因此不会按您的要求排序。要解决此问题,请添加另一个计算字段,该字段提供正确的排序,并将其用作排序表达式,这将与第一个组表达式不同:

=Switch(
  Fields!Total_Aged_Days.Value<=5, 1
  , Fields!Total_Aged_Days.Value<=10, 2
  , Fields!Total_Aged_Days.Value<=15, 3
  , true, 4
)

这将为您的群组提供预期的订单。将排序表达式添加到“类别”组或适当的任何位置。

相关问题