sql >> Databáze >  >> RDS >> Sqlserver

Použití rekurzivního CTE na seskupené řádky tabulky (SQL server 2005)

Některé věci k vyzkoušení

  • Namísto spojení s každým řádek a filtrování výsledků ve vaší klauzuli where, můžete zkusit, zda snížení počtu záznamů přímo ve spojení věci urychlí?
  • Přidejte krycí index na PersonKey, RoomKey, CheckOut &Row a zjistěte, zda to zlepší výkon.

Příkaz 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. Pokud jinak na klauzuli WHERE

  2. výsledky spojení sql 2005

  3. JSON_SET() – Vložení nebo aktualizace hodnot v dokumentu JSON v MySQL

  4. Vytvořte stůl 6 x 6 s automatickým přeléváním z horní linie