Merging data in a single SQL table without a Cursor

后端 未结 4 1287
-上瘾入骨i
-上瘾入骨i 2021-01-31 19:51

I have a table with an ID column and another column with a number. One ID can have multiple numbers. For example

ID | Number
 1 |  25
 1 |  26
 1 |  30
 1 |  24
         


        
4条回答
  •  名媛妹妹
    2021-01-31 20:49

    Solution with CTE and recursion:

    WITH CTE AS (
      SELECT T.ID, T.NUMBER, T.NUMBER AS GRP
      FROM T 
      LEFT OUTER JOIN T T2 ON T.ID = T2.ID AND T.NUMBER -1 = T2.NUMBER 
      WHERE T2.ID IS NULL
      UNION  ALL
      SELECT T.ID, T.NUMBER, GRP
      FROM CTE 
      INNER JOIN T
      ON T.ID = CTE.ID AND T.NUMBER  = CTE.NUMBER + 1
    )
    SELECT ID, MAX( NUMBER ), MIN(NUMBER)
    FROM CTE
    GROUP BY ID, GRP
    

    Results at fiddlesql

提交回复
热议问题