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

chỉ nhóm sql theo các hàng theo trình tự

Đây được gọi là vấn đề "đảo". Sử dụng phương pháp tiếp cận của Itzik Ben Gan:

;WITH YourTable AS
(
SELECT 1 AS N, 'A' AS C UNION ALL
SELECT 2 AS N, 'A' AS C UNION ALL
SELECT 3 AS N, 'A' AS C UNION ALL
SELECT 4 AS N, 'B' AS C UNION ALL
SELECT 5 AS N, 'B' AS C UNION ALL
SELECT 6 AS N, 'B' AS C UNION ALL
SELECT 7 AS N, 'A' AS C UNION ALL
SELECT 8 AS N, 'A' AS C
),
     T
     AS (SELECT N,
                C,
                DENSE_RANK() OVER (ORDER BY N) - 
                DENSE_RANK() OVER (PARTITION BY C ORDER BY N) AS Grp
         FROM   YourTable)
SELECT COUNT(*),
       C
FROM   T
GROUP  BY C,
          Grp 
ORDER BY MIN(N)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 3 cách chuyển đổi thập phân sang thập lục phân trong SQL Server (T-SQL)

  2. Cách sử dụng tìm kiếm ngữ nghĩa trong SQL Server

  3. Cách SHOWPLAN_XML hoạt động trong SQL Server

  4. Biểu thức chính quy trong máy chủ SQL Server?

  5. Chèn dữ liệu thông qua một hàm có giá trị bảng trong SQL Server