Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Menerapkan CTE rekursif pada baris tabel yang dikelompokkan (SQL server 2005)

Beberapa hal untuk dicoba

  • Alih-alih bergabung dengan setiap baris dan memfilter hasil di klausa where Anda, dapatkah Anda mencoba jika mengurangi jumlah record secara langsung di join mempercepat segalanya?
  • Tambahkan indeks penutup pada PersonKey, RoomKey, CheckOut &Row dan lihat apakah itu meningkatkan kinerja.

Pernyataan 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. Konversikan data baris ke kolom di SQL Server

  2. Tidak dapat terhubung ke SQL Server dengan PHP

  3. SQL Server - CAST DAN DIVIDE

  4. SQL Trigger tidak dapat melakukan BUKAN DELETE tetapi diperlukan untuk ntext, kolom gambar

  5. SQL Server 2005 Penghapusan Cascading