这是我的 SELECT 查询的结果。

Code    Name         MONTH 
------- ------------ ----------- 
Cust3   CustName3    1 
Cust2   CustName2    2 
Cust5   CustName5    3 
Cust2   CustName2    5 
Cust2   CustName2    6 
Cust3   CustName3    7 
Cust6   CustName6    8 
Cust1   CustName1    10 
Cust1   CustName1    11 
Cust3   CustName3    12 

现在我想选择连续两个月具有相同 Code 值的行,例如 Cust2 在第 5 个月和第 6 个月是连续的,而 Cust1 在第 10 个月和第 11 个月连续:

Code    Name         MONTH 
------- ------------ ----------- 
Cust2   CustName2    5 
Cust2   CustName2    6 
Cust1   CustName1    10 
Cust1   CustName1    11 

请您参考如下方法:

这是另一种使用 ROW_NUMBERCOUNT() OVER 的方法:

SQL Fiddle

WITH Cte AS( 
    SELECT *, 
        RN = [Month] - ROW_NUMBER() OVER(PARTITION BY Code ORDER BY [Month]) 
    FROM TestData 
), 
Cte2 AS( 
    SELECT *, 
        CC = COUNT(*) OVER(PARTITION BY Code, RN) 
    FROM Cte 
) 
SELECT 
    Code, Name, [Month] 
FROM Cte2 
WHERE CC >= 2 


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!