Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Thay đổi cột số

Đây là một vấn đề về khoảng trống và đảo.

Một cách tiếp cận. 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. Khôi phục cơ sở dữ liệu SQL Server - Khóa chính không mở

  2. cơ sở dữ liệu:khóa chính, Clustered hoặc NonClustered

  3. Khắc phục “tên hồ sơ không hợp lệ” khi gửi thư từ máy chủ SQL

  4. Xử lý giá trị NULL trong UNPIVOT

  5. OPENROWSET không chấp nhận các biến cho các đối số của nó (SQL Server)