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

Áp dụng CTE đệ quy trên các hàng bảng được nhóm (SQL server 2005)

Một số điều cần thử

  • Thay vì tham gia với mọi hàng và lọc kết quả trong mệnh đề where của bạn, bạn có thể thử giảm số lượng bản ghi trực tiếp trong phép nối có giúp tăng tốc mọi thứ không?
  • Thêm chỉ mục bao gồm trên PersonKey, RoomKey, CheckOut &Row và xem liệu nó có cải thiện hiệu suất hay không.

Câu lệnh SQL

;with CTE (PERSONKEY, ROOMKEY, CHECKIN, CHECKOUT, ROW)
as (select RU.PERSONKEY,
           RU.ROOMKEY, 
           RU.CHECKIN,
           RU.CHECKOUT,
           RU.ROW
    from ROOMUSAGE RU
    where RU.ROW = 1

    union all

    select RU.PERSONKEY,
           RU.ROOMKEY, 
           RU.CHECKIN,
           RU.CHECKOUT,
           RU.ROW
    from ROOMUSAGE RU 
         inner join CTE on CTE.ROW + 1 = RU.ROW
                           and CTE.CHECKIN = RU.CHECKOUT
                           and CTE.PERSONKEY = RU.PERSONKEY
                           and CTE.ROOMKEY = RU.ROOMKEY
)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để chuyển sqlparameter tới IN ()?

  2. Làm thế nào để so sánh dấu thời gian SQL trong .NET?

  3. SQL Server - Trong mệnh đề có một biến được khai báo

  4. SQL Server - sau khi chèn trình kích hoạt - cập nhật một cột khác trong cùng một bảng

  5. Đếm các bản ghi cho mỗi tháng trong một năm