Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Промяна на колоната с номера

Това е проблем с пропуски и острови.

Един подход. 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 



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Неуспешно влизане за потребител „DOMAIN\MACHINENAME$“

  2. VarBinary срещу Image Тип данни на SQL Server за съхраняване на двоични данни?

  3. Как да получите резултати от множество таблици на съхранена процедура с помощта на SimpleJDBCCall през пролетта?

  4. Разбиране на SQL Server винаги криптиран

  5. Оптимизиран SQL за дървовидни структури