Выборочная агрегация SQL; Не обычная группа - PullRequest
0 голосов
/ 26 июня 2018

Мой набор данных выглядит следующим образом. Уровни оповещений следуют за приоритетом:

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, Арвин

...