我正在尝试在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。
答案 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
)
这将为您的群组提供预期的订单。将排序表达式添加到“类别”组或适当的任何位置。