SQL для определения времени, прошедшего из нескольких перекрывающихся интервалов

Без использования MSSQL, DB2 или Oracle. Нет CTE. Нет предиката OVERLAP. Нет типа данных ИНТЕРВАЛ. Ситуация: на ремонтируемом автомобиле работы не могут начаться до тех пор, пока все детали, заказанные для работы, получены. Детали можно заказывать несколько раз до начала ремонта. Нам нужно извлечь время, в течение которого транспортное средство находилось в состоянии «удержания деталей»

. Итак, для транспортного средства, идентифицированного как id = 1 детали были заказаны (d1) и получены (d2) в 4 различных случаях

    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

Как видно из вышеизложенного, время ожидания начала работы (при условии, что 8/1 в качестве дата, с которой автомобиль был готов к работе) 13 дней. Фактическое время ожидания запчастей составило 11 дней, это число нам нужно извлечь из данных. Фактические данные datetime будут временными метками, из которых мы будем извлекать часы, мы использовали даты в этом примере данных для простоты представления. Мы изо всех сил пытаемся создать решение на основе набора (не psm, не udf, не курсора). TIA

9
задан Martin Smith 28 August 2011 в 23:58
поделиться