如何计算表格中的持续时间

维布拉夫·萨拉夫(Vibhav Sarraf)

我有桌子

   TABLE [dbo].[IssueStatus](
    [Id] [int] PRIMARY KEY ,
    [IssueId] [varchar(50)],
    [OldStatus] [int] ,
    [NewStatus] [int] ,
    [Updated] [datetime]

2个状态列可以具有3个可能的值1、2和3(1表示打开,2表示进行中,3表示已解决)。
Updated包含状态更改时的日期时间。问题的状态最初会自动设置为1。我想计算问题进行时的总时间(以秒为单位)。

注意:-状态可能直接从1更改为3。
状态可以从1更改为2,然后再更改为1,依此类推,但最终状态可以保证为3

我已经检查过-根据日期时间计算表中不同记录之间的持续时间,但是对我没有多大帮助

原始情况要复杂得多:1处于打开状态,3处于进行中,4处于重新打开状态,5处于解决状态,6处于关闭状态

谢谢你

79890   26327   3   In Progress 5   Resolved    2014-12-17 09:10:03.767
74980   26328   3   In Progress 5   Resolved    2014-11-20 10:21:29.780
74748   26328   1   Open    3   In Progress 2014-11-20 02:34:15.440
77843   26329   1   Open    3   In Progress 2014-12-08 08:04:04.567
77857   26329   1   Open    5   Resolved    2014-12-08 08:23:57.720
77856   26329   3   In Progress 1   Open    2014-12-08 08:23:46.067
75107   26330   1   Open    5   Resolved    2014-11-21 06:37:28.810
76441   26330   5   Resolved    6   Closed  2014-12-02 07:27:39.927
78638   26331   1   Open    3   In Progress 2014-12-10 07:47:41.347
78091   26331   3   In Progress 1   Open    2014-12-09 02:44:36.970
77858   26331   1   Open    3   In Progress 2014-12-08 08:28:08.597
78641   26331   3   In Progress 1   Open    2014-12-10 07:57:03.603
78642   26331   1   Open    5   Resolved    2014-12-10 07:57:11.483
74753   26332   1   Open    3   In Progress 2014-11-20 02:59:11.013
74763   26332   3   In Progress 5   Resolved    2014-11-20 03:04:01.127
76846   26333   1   Open    5   Resolved    2014-12-05 00:57:09.140
76849   26340   1   Open    5   Resolved    2014-12-05 01:52:05.957
87861   26341   5   Resolved    6   Closed  2015-02-02 04:18:25.230
85491   26341   1   Open    5   Resolved    2015-01-22 04:48:13.003
77321   26342   3   In Progress 1   Open    2014-12-08 00:56:26.233
75029   26342   1   Open    3   In Progress 2014-11-21 02:48:41.440
79030   26342   3   In Progress 5   Resolved    2014-12-11 21:43:23.657
76395   26342   1   Open    3   In Progress 2014-12-02 02:58:17.063
75197   26342   3   In Progress 1   Open    2014-11-24 02:06:38.490
78502   26342   1   Open    3   In Progress 2014-12-10 02:28:18.570
74933   26343   1   Open    5   Resolved    2014-11-20 08:08:44.423
74821   26344   1   Open    5   Resolved    2014-11-20 05:56:00.513
75295   26345   1   Open    5   Resolved    2014-11-25 02:06:07.260
卡利斯托

我的下面查询显示每个条目处于状态2的时间。

使用以下示例数据:

Id  IssueId OldStatus NewStatus Updated        
1   aa      NULL        1       2015-01-01 14:00:00     
2   aa      1           2       2015-01-01 16:00:00     
4   aa      2           3       2015-01-01 17:30:00     
5   bb      NULL        1       2015-02-13 11:30:00     
6   bb      1           2       2015-02-13 12:56:00     
7   bb      2           3       2015-02-13 14:20:00     
8   cc      NULL        1       2015-02-14 11:30:00     
9   cc      1           2       2015-02-14 12:56:00     
10  cc      2           1       2015-02-14 13:19:00     
11  cc      1           2       2015-02-14 14:20:00     
12  cc      2           3       2015-02-14 14:25:00     

我可以使用以下查询:

 ;with NewStatus2 as (  
  SELECT Id, IssueId, Updated, ROW_NUMBER()  over (Order BY IssueId, id) PrevID FROM IssueStatus [is] 
  WHERE NewStatus = 2  )

, OldStatus2 as (  
  SELECT Id, IssueId, Updated, ROW_NUMBER()  over (Order BY IssueId, id) PrevID FROM IssueStatus [is] 
  WHERE OldStatus = 2  )

SELECT ns.IssueId
     , ns.Updated FromTime
     , os.Updated ToTime
     , DATEDIFF(minute , ns.Updated , os.Updated) as TimeSpan_Spent_In_Status_2
  FROM NewStatus2 ns
       INNER JOIN OldStatus2 os ON ns.IssueId = os.IssueId 
       AND ns.PrevID = os.PrevID                                 
  ORDER BY ns.Updated , os.Updated;

得到这个结果:

IssueId FromTime                ToTime            TimeSpan_Spent_In_Status_2
aa     2015-01-01 16:00:00  2015-01-01 17:30:00     90
bb     2015-02-13 12:56:00  2015-02-13 14:20:00     84
cc     2015-02-14 12:56:00  2015-02-14 13:19:00     23
cc     2015-02-14 14:20:00  2015-02-14 14:25:00     5

编辑由@vibhavSarraf提供的查询和示例数据匹配结构

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在谷歌表格中计算(日期 - 持续时间)

如何在Google表格中求和持续时间?

计算持续时间

通过表格中的2个选择的时间选项计算持续时间值

如何计算dttm变量的持续时间?

如何计算总持续时间:Durationfield()

计算复杂表中的持续时间

在Rails中,如何计算从mysql读取的2个UTC时间之间的持续时间

如何计算R中给定时间点的持续时间

如何使用R计算时间序列数据中的持续时间?

如何计算事件总持续时间的经过时间?

如何计算发生之间的时间(和发生的持续时间)

计算MySQL中时间重叠的重叠持续时间

计算时间序列python中事件的持续时间

计算会话持续时间

计算日期持续时间

计算夜班持续时间

计算持续时间(年龄)

如何对 Google 表格中的一组持续时间进行过滤?

我如何确定持续时间以填写表格

Google表格中的持续时间公式出现问题

如何基于R中的持续时间(显示开始和结束时间以及以小时和分钟为单位的持续时间)来计算最长日期

如何通过R中的ID计算分类咒语的数量和持续时间

如何计算在数据帧的不同行中拆分的事件的持续时间

由于打字稿中的客户持续时间,如何计算客户

如何通过 MySQL 中的登录实例计算平均会话持续时间?

如何计算每组 pandas df 中“True”值的平均连续持续时间?

如何在 Typescript 中以天为单位计算持续时间(潜在的未定义值)?

如何计算csv文件中不同重叠事件之间的持续时间 - 熊猫?