如何组,而下一个记录所有记录等于前一个记录
问题描述:
嗨,大家好,请帮我如何达到这个结果,我有如下表数据如何组,而下一个记录所有记录等于前一个记录
AutoID Quantity
1 2
2 2
3 2
4 7
5 7
6 2
7 2
使用min
和max
:
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
希望你能帮助我。
答
使用的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
请阅读答案中引用的文章。它会更好地解释解决方案。 –
你的逻辑的一些描述将是巨大的。 –