sql-server - 选择元素在接下来的 2 个月内出现。数据库服务器

标签 sql-server

这是我的 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

关于sql-server - 选择元素在接下来的 2 个月内出现。数据库服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30496582/

相关文章:

asp.net - 创建数据库触发器到Sql DB

sql-server - 使用 2 个日期字段按月汇总数据的 T-SQL 查询

mysql左连接仅选择左表中最高的

sql-server - SQL Server : Design question - stored records as rows vs as BLOB - NVARCHAR(MAX)

sql-server - 使用 Entity Framework 管理数据库索引的正确方法

通过传入域帐户/密码,PHP 连接到具有集成安全性的 SQL Server?

c# - 从表中获取所有结果选项

SQL素数函数

sql-server - 如何使用 BCP 写入远程 SQL Server?

c# - Visual Studio C# 和 SQL Server : connection property has not been initialized