选择性聚合SQL;不是常规的分组方式

选择性聚合SQL;不是常规的分组方式,sql,group-by,aggregation,Sql,Group By,Aggregation,我的数据集看起来像这样。警报级别遵循以下优先级: C > O > W 打开和关闭日期遵循警报级别优先级。 例如:警报级别“W”的关闭日期大于警报级别“O”的打开日期,将取C的打开日期的关闭日期。(我使用CTE完成了此部分)结果数据集如下所示。现在,挑战在于将两个连续的相同警报级别消除到只有一个级别,其中两个开放日期的最小值和两个关闭日期之间的最大值(读取前2个“W”) 数据集: ID axlenumber alertlevel closeReason Open

我的数据集看起来像这样。警报级别遵循以下优先级:

C > O > W
打开和关闭日期遵循警报级别优先级。 例如:警报级别“W”的关闭日期大于警报级别“O”的打开日期,将取C的打开日期的关闭日期。(我使用CTE完成了此部分)结果数据集如下所示。现在,挑战在于将两个连续的相同警报级别消除到只有一个级别,其中两个开放日期的最小值和两个关闭日期之间的最大值(读取前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
提前感谢团队,
阿文

请有人帮我编辑一下,让它看起来像一个数据集。我不能。谢谢,我很抱歉,您可以使用createtable…,insert-in…,使其看起来像一个数据集。。。声明。SqLFiddle将在这方面为您提供帮助。您的意思是前两行样本数据是“连续的”,在2009年1月27日关闭,在2009年1月22日打开,应该合并。所需的结果行包括10/15/08到1/27/09,而不是10/15/08到3/27/09,如果将这些行组合在一起,我会预期这些结果。我错过了什么?请阅读一些关于改进您的问题的提示。@HABO--这是我的打字错误:its 1/27/2009。对不起,好的。意思是“以任何方式重叠”?第五行和第六行是组合的,因为它们都是
alertlevel
“W”,并且恰好具有相同的日期。组合有一个
closeReason
,它是两行值中最短的,即“修复”而不是“更高级别警报”,或者是否有其他选择依据?