如何组,而下一个记录所有记录等于前一个记录

问题描述:

嗨,大家好,请帮我如何达到这个结果,我有如下表数据如何组,而下一个记录所有记录等于前一个记录

AutoID Quantity 
    1  2 
    2  2  
    3  2  
    4  7 
    5  7 
    6  2 
    7  2 

使用minmax

Select Min(AutoID) as AutoIDMin, Min(AutoID) as AutoIDMax, Quantity 
from table1 GROUP By Quantity 

我的结果是:

AutoIDMin - AutoIDMax - Quantity 
    1   7   2 
    4   5   7 

什么,我想实现如下:

AutoIDMin AutoIDMax Quantity 
    1   3   2 
    4   5   7 
    6   7   2 

希望你能帮助我。

+0

你的逻辑的一些描述将是巨大的。 –

使用的ROW_NUMBER分野:

WITH Cte AS(
    SELECT *, 
     grp = ROW_NUMBER() OVER(ORDER BY AutoID) 
       - ROW_NUMBER() OVER(PARTITION BY Quantity ORDER BY AutoID) 
    FROM tbl 
) 
SELECT 
    AutoIDMin = MIN(AutoID), 
    AutoIDMax = MAX(AutoID), 
    Quantity 
FROM Cte 
GROUP BY grp, Quantity 
ORDER BY AutoIDMin 

这里是分组岛屿的文章杰夫MODEN: Group Island of Contiguous Dates

+0

感谢您的快速和正确的答案哥们 – Angelo

+0

请阅读答案中引用的文章。它会更好地解释解决方案。 –