小编jon*_*jon的帖子

用于查找从多个重叠间隔开始经过的时间的SQL

不使用MSSQL或DB2或Oracle.没有CTE.没有OVERLAP谓词.没有INTERVAL数据类型.情况:在要修理的车辆上工作不能开始,直到收到所有订购的部件.零件可在维修开始前多次订购.我们需要提取车辆在"零件保持"的时间

因此,对于标识为id = 1的车辆,在4个不同的场合下订购(d1)并接收(d2)

    ID     d1     d2
     1     8/1    8/8
     1     8/2    8/6
     1     8/12   8/14
     1     8/3    8/10

 8/1                             8/8
  d1                              d2   
  |-------------------------------|  
         8/2             8/6                    8/12      8/14                  
         d1               d2                     d1        d2     
          |---------------|                      |----------|    
                   8/3                 8/10
                   d1                    d2
                   |---------------------|   
 8/1                                                       8/14
  |---------------------------------------------------------|  = 13 days
                                        8/10    8/12
  |--------------------------------------|    +  |----------|  = parts hold  = 11 days
Run Code Online (Sandbox Code Playgroud)

如上所示,开始工作的等待时间(假设车辆可用于工作的日期为8/1)为13天.等待零件所花费的实际时间是11天,这是我们需要从数据中得出的数字.实际的日期时间数据将是我们将从中提取小时数的时间戳,我们在此示例数据中使用日期以简化演示.我们正在努力生成一个集合(不是psm,而不是udf,而不是游标)的解决方案.TIA

sql intervals gaps-and-islands

9
推荐指数
2
解决办法
5884
查看次数

标签 统计

gaps-and-islands ×1

intervals ×1

sql ×1