sql >> Database teknologi >  >> RDS >> Sqlserver

Anvend en rekursiv CTE på grupperede tabelrækker (SQL-server 2005)

Nogle ting at prøve

  • I stedet for at deltage med hver række og filtrering af resultaterne i din where-klausul, kan du prøve, om det går hurtigere at reducere mængden af ​​poster direkte i joinforbindelsen?
  • Tilføj et dækkende indeks på PersonKey, RoomKey, CheckOut &Row og se, om det forbedrer ydeevnen.

SQL-erklæring

;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. SQL Server 2008 - Pivot på én kolonne, grupper efter en anden, bevar reference til tredje

  2. Jeg fik fejlen Ikke-understøttet opslag 'icontains' for CharField eller join på feltet er ikke tilladt.

  3. Hvad er den maksimale længde af data, jeg kan lægge i en BLOB-kolonne i MySQL?

  4. Brug af ActiveRecord til at opnå komplekse relationer i Rails