How to find N Consecutive records in a table using SQL

前端 未结 4 987
Happy的楠姐
Happy的楠姐 2020-12-30 12:16

I have the following Table definition with sample data. In the following table, Customer Product & Date are key fields

Table One
Customer   Product    Da         


        
4条回答
  •  清歌不尽
    2020-12-30 12:58

    Thanks to everyone for posting your solution. Thought, I would also share my solution with everyone. Just as an FYI, I received this solution from another SQL Server Central forum member. I am definitely not going to take credit for this solution.

    DECLARE @CNT INT
    SELECT @CNT = 3
    
    SELECT * FROM
    (
      SELECT
        [Customer], [Product], [Date], [Sale], groupID, 
        COUNT(*) OVER (PARTITION BY [Customer], [Product], [Sale], groupID) AS groupCnt
      FROM
      (
        SELECT
          [Customer], [Product], [Date], [Sale],
          ROW_NUMBER() OVER (PARTITION BY [Customer], [Product] ORDER BY [Date])
          - ROW_NUMBER() OVER (PARTITION BY [Customer], [Product], [Sale] ORDER BY [Date]) AS groupID
        FROM
          [TableSales]
      ) T1
    ) T2
    WHERE
      T2.[Sale] = 'NO' AND T2.[groupCnt] >= @CNT
    

提交回复
热议问题