Możesz mieć tylko jedną instrukcję po CTE. Możesz jednak zdefiniować kolejne CTE na podstawie poprzedniego:
WITH t1 AS (
SELECT a, b, c
FROM table1
)
, t2 AS (
SELECT b
FROM t1
WHERE a = 5
)
SELECT *
FROM t2;
Biorąc pod uwagę, że próbujesz policzyć wiersze i wypełnić kursor referencyjny z tego samego zestawu wyników, bardziej odpowiednie może być wykonanie jednej z następujących czynności:
- utwórz widok
- tymczasowe wyniki etapowe w tabeli tymczasowej
Wreszcie, jeśli zapytanie jest dość proste, po prostu napisz je raz dla liczby i ponownie dla kursora. Prostota i czytelność przewyższają w tym przypadku zasadę OSUSZANIA .