【问题标题】:Pull a DATEDIFF between Rows with Distinct value and WHERE Clause在具有不同值和 WHERE 子句的行之间拉一个 DATEDIFF
【发布时间】:2019-11-07 19:42:44
【问题描述】:

我正在尝试生成一个 DATEDIFF 来计算 SLA 遵守情况,但我需要执行 DATEDIFF 的表信息按行复制(而不是开始时间列、结束时间列)。

因此,我需要为同一列设置一个 WHERE 语句,使用 2 个不同的 StatusId 对这两个时间戳进行 DATEDIFF。

例如,

PackageId | StatusId | rowDateModified
--------------------------------------
1              1        2019-06-01 00:41
1              2        2019-06-01 01:30

理想情况下,我需要能够计算包创建 (StatusId = 1) 和包完成 (StatusId = 2) 之间所需的时间,其中 PackageId 是不同的。

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    您可以使用条件聚合:

    select packageid,
           datediff(day,
                    max(case when statusid = 1 then rowdatemodified end),
                    max(case when statusid = 2 then rowdatemodified end)
                   )
    from t
    group by packageid
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-08
      • 2017-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多