【问题标题】:SSRS group by rangesSSRS 按范围分组
【发布时间】:2014-02-19 00:46:46
【问题描述】:

我在数据集中有一个字段,其中包含一个公式(使用 IFF 和 datediff),该公式确定一条记录的打开时间(有 CreatedDate 和 ClosedDate)。然后我按该字段进行分组。

但是,我希望能够将这些数据分组到范围中。所以现在,标题是 Days Open,三行表示 7、5 和 1(天)。但随着数据的增加,行数会增加,因为 Days Open 可以是 1 到 50 之间的任何数字。这意味着我最终可能会得到 50 行。

我希望有一定数量的行,每行都在一个范围内。因此,一行将有“1-5 天开放”,然后计算有多少行 >=5,另一行“6-10 天开放”,然后计算这些。等等。

如何按不同范围对计算字段进行分组?我能想到的唯一方法就是写一大堆SQL。

【问题讨论】:

    标签: tsql reporting-services


    【解决方案1】:

    因此,如果我理解正确,您已向数据集添加了一个字段,该字段使用表达式根据其他两个字段(CreatedDate 和 ClosedDate)计算“打开天数”值。

    您已经知道 Days Open 的值可以是 1 - 50 并且您知道您想要什么范围,因此您可以将另一个计算字段添加到基于与 Days 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 函数,这可以大大简化,例如在 SQL Server 的 T-SQL 中,您可以添加

    SELECT 
    ...
    DATEDIFF(dd, CreatedDate, ClosedDate) AS DaysOpen
    ...
    FROM
    ...
    

    这将为您提供可以在上述表达式中使用的单个数据集查询字段,例如

    =Switch(
       Fields!DaysOpen.Value) > 0 And 
       Fields!DaysOpen.Value) <=5, 
       "1-5 Days",
    

    无论您采用哪种计算方式,您都可以使用此 Dataset 字段,该字段包含 Tablix 中简单分组表达式中的范围值。

    【讨论】:

    • 这工作得很好(谢谢),但我有一个问题。当我对该 Switched 字段 A-Z 进行排序时,第一个值(1-5 天)消失了,该字段为空白。如果我对 Z-A 进行排序,它会显示得很好。有什么想法吗?
    • 没关系 - 我有一个必须解决的数据问题。排序问题不再是问题。您的解决方案 100% 有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-29
    • 2013-02-21
    • 1970-01-01
    • 2013-11-04
    • 2021-05-06
    相关资源
    最近更新 更多