Мой набор данных выглядит следующим образом. Уровни оповещений следуют за приоритетом:
C > O > W
Открытые и закрытые Даты соответствуют приоритетам уровня оповещения.
Например, уровень оповещения «W» с закрытой датой, превышающей дату открытия уровня оповещения «O», будет принимать закрытую дату открытой даты C. (я сделал эту часть, используя CTE), результирующий набор данных как ниже. Теперь задача состоит в том, чтобы исключить 2 последовательных одинаковых уровня оповещения только для одного с минимумом из двух открытых дат и максимумом из двух закрытых дат между ними (сначала прочитайте 2 'W')
Набор данных:
ID axlenumber alertlevel closeReason OpenDate closeddate
100 1 W HIGHER_LEVEL_ALERT 10/15/2008 0:00 1/27/2009 0:00
100 1 W HIGHER_LEVEL_ALERT 1/22/2009 0:00 1/27/2009 0:00
100 1 O REPAIR 1/27/2009 0:00 3/27/2009 0:00
100 1 C REPAIR 1/27/2009 0:00 3/27/2009 0:00
100 1 W HIGHER_LEVEL_ALERT 5/27/2012 0:00 8/18/2012 0:00
100 1 W REPAIR 5/27/2012 0:00 8/18/2012 0:00
100 1 C REPAIR 5/27/2012 0:00 8/18/2012 0:00
100 1 W HIGHER_LEVEL_ALERT 6/22/2016 0:00 7/21/2017 0:00
100 1 O HIGHER_LEVEL_ALERT 7/2/2017 0:00 11/15/2017 0:00
100 1 C REPAIR 7/21/2017 0:00 11/15/2017 0:00
Мой желаемый набор данных должен выглядеть следующим образом:
ID axlenumber alertlevel closeReason OpenDate closeddate
100 1 W HIGHER_LEVEL_ALERT 10/15/2008 0:00 1/27/2009 0:00
100 1 O REPAIR 1/27/2009 0:00 1/27/2009 0:00
100 1 C REPAIR 1/27/2009 0:00 3/27/2009 0:00
100 1 W REPAIR 5/27/2012 0:00 5/27/2012 0:00
100 1 C REPAIR 5/27/2012 0:00 8/18/2012 0:00
100 1 W HIGHER_LEVEL_ALERT 6/22/2016 0:00 7/2/2017 0:00
100 1 O HIGHER_LEVEL_ALERT 7/2/2017 0:00 7/21/2017 0:00
100 1 C REPAIR 7/21/2017 0:00 11/15/2017 0:00
Спасибо в Advance Team,
Арвин