我在数据集中有一个字段,其中包含一个公式(使用IFF和datediff),用于确定记录打开的时间长度(有一个CreatedDate和一个ClosedDate)。然后我按照那个领域进行分组。
但是,我希望能够将这些数据分组到范围中。所以现在,标题是Days Open,三行表示7,5和1(天)。但是随着更多数据的进入,行将会增长,因为Days Open可以是1到50之间的任何数字。这意味着我最终可能会有50行。
我希望有一组行,每行都在一个范围内。因此,一行将“1-5天打开”,然后计算多少行>> 5,另一行“6-10天打开”,并计算这些行。等
如何按不同范围对计算字段进行分组?我能想到的唯一方法是编写大量的SQL。
答案 0 :(得分:3)
因此,如果我已正确理解,您已向数据集添加了一个字段,该数据集使用表达式根据其他两个字段(CreatedDate和ClosedDate)计算“Days Open”值。
您已经知道Days Open的值可以是1 - 50并且您知道您想要的范围,因此您可以向数据集添加另一个计算字段,该字段基于与Open Open相同的计算,例如
假设您现有的开放天数计算
=DateDiff(DateInterval.Day, Fields!CreatedDate.Value, Fields!ClosedDate.Value)
然后你可以添加
=Switch(
DateDiff(DateInterval.Day, Fields!CreatedDate.Value, Fields!ClosedDate.Value) > 0 And
DateDiff(DateInterval.Day, Fields!CreatedDate.Value, Fields!ClosedDate.Value) <=5,
"1-5 Days",
DateDiff(DateInterval.Day, Fields!CreatedDate.Value, Fields!ClosedDate.Value) > 5 And
DateDiff(DateInterval.Day, Fields!CreatedDate.Value, Fields!ClosedDate.Value) <=10,
"6-10 Days",
DateDiff(DateInterval.Day, Fields!CreatedDate.Value, Fields!ClosedDate.Value) > 11 And
DateDiff(DateInterval.Day, Fields!CreatedDate.Value, Fields!ClosedDate.Value) <=15,
"11-15 Days",
...
DateDiff(DateInterval.Day, Fields!CreatedDate.Value, Fields!ClosedDate.Value) > 45 And
DateDiff(DateInterval.Day, Fields!CreatedDate.Value, Fields!ClosedDate.Value) <=50,
"45-50 Days"
)
如果您可以修改数据集的实际SQL查询来执行Datediff功能,例如,这可以大大简化,例如在T-SQL for SQL Server中,您可以添加
SELECT
...
DATEDIFF(dd, CreatedDate, ClosedDate) AS DaysOpen
...
FROM
...
它会为您提供一个数据集查询字段,您可以在上面的表达式中使用该字段,例如
=Switch(
Fields!DaysOpen.Value) > 0 And
Fields!DaysOpen.Value) <=5,
"1-5 Days",
无论您如何计算它,都可以在Tablix中的简单分组表达式中使用包含范围值的数据集字段。