Change number column

后端 未结 1 1847
一个人的身影
一个人的身影 2020-12-12 01:14

I have NAME and PAY, but I need CHANGEGROUP in this example:

NAME   PAY  DATE    CHANGEGROUP
Sally   12  10/01/2011  1
Sally   12  10/01/2011  1
Sally   12           


        
相关标签:
1条回答
  • 2020-12-12 01:47

    This is a gaps and islands problem.

    One approach. SQL Fiddle

    WITH T1
         AS (SELECT *,
                    ROW_NUMBER()
                      OVER (
                        PARTITION BY NAME
                        ORDER BY DATE) - ROW_NUMBER()
                                           OVER (
                                             PARTITION BY NAME, [PAY]
                                             ORDER BY DATE) AS Grp
             FROM   Table1),
         T2
         AS (SELECT *,
                    MIN(DATE)
                      OVER (
                        PARTITION BY NAME, Grp) AS MinDate
             FROM   T1)
    SELECT [NAME],
           [PAY],
           [DATE],
           DENSE_RANK()
             OVER (
               PARTITION BY NAME
               ORDER BY MinDate) AS CHANGEGROUP
    FROM   T2
    ORDER  BY NAME,
              MinDate 
    
    0 讨论(0)
提交回复
热议问题