Mam to proste zapytanie T-SQL, które emituje kilka kolumn z tabeli, a także łączy informacje z innych powiązanych tabel.
Mój model danych jest prosty. Mam zaplanowane wydarzenie z uczestnikami. Muszę wiedzieć, ilu uczestników bierze udział w każdym wydarzeniu.
Moim rozwiązaniem jest dodanie CTE, który grupuje zaplanowane wydarzenia i zlicza liczbę uczestników.
Pozwoli mi to dołączyć do tych informacji na zaplanowane wydarzenie. Proste zapytanie.
Lubię, gdy moje zapytania są proste, jednak jeśli kiedykolwiek będę potrzebować dodatkowych tymczasowych wyników podczas mojego prostego zapytania, co mam zrobić?
Naprawdę chciałbym, gdybym mógł mieć wiele CTE, ale nie mogę, prawda? Jakie mam opcje tutaj?
Wykluczyłem widoki i robienie rzeczy w warstwie danych aplikacji. Wolę izolować zapytania SQL.
źródło
[ ,...n ]
in[ WITH <common_table_expression> [ ,...n ] ]
. Przykład C, „Używanie wielu definicji CTE w jednym zapytaniu”, wyjaśnia to wyraźnie. Niestety, ten przykład nie jest dostarczany w dokumentacji SQL 2008 i starsze (tj. przykład nie został podany, gdy OP opublikował pytanie)UNION ALL
Z pewnością możesz mieć wiele CTE w jednym wyrażeniu zapytania. Wystarczy oddzielić je przecinkami. Oto przykład. W poniższym przykładzie istnieją dwa CTE. Jeden jest nazwany,
CategoryAndNumberOfProducts
a drugi nazwanyProductsOverTenDollars
.źródło