2016-03-04 147 views
1

嗨,大家好,請幫我如何達到這個結果,我有如下表數據如何組,而下一個記錄所有記錄等於前一個記錄

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

你的邏輯的一些描述將是巨大的。 –

回答

3

使用的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

請閱讀答案中引用的文章。它會更好地解釋解決方案。 –

相關問題