Zastanawiałem się, czy to było możliwe. Mam istniejącego zapytania, który korzysta z klauzuli WITH
zastosować pewne dane zagregowane do SELECT
kwerendy tak: (znacznie uproszczony)SQL Server - używając klauzuli WITH w instrukcji INSERT
;WITH alias (y,z)
AS
(
SELECT y,z FROM tableb
)
SELECT y, z FROM alias
Chcę teraz INSERT
wyniki tej kwerendy do innej tabeli.
Próbowałem następujące:
INSERT INTO tablea(a,b)
;WITH alias (y,z)
AS
(
SELECT y,z FROM tableb
)
SELECT y, z FROM alias
ale pojawia się błąd:
Incorrect syntax near ';'.
Więc próbowałem bez średnikiem ale mam błąd:
Incorrect syntax near the keyword 'WITH'.
Incorrect syntax near the keyword 'with'. If this statement is a common table expression or an xmlnamespaces clause, the previous statement must be terminated with a semicolon.
Czy co próbuję zrobić z inną, nieco inną składnią?
Średnik przechodzi na ** koniec ** wyciągu. Umieszczenie go z przodu jest złym nawykiem i powinieneś przyzwyczaić się do właściwego kończenia każdego zdania średnikiem. –
Czy sprawdziłeś [dokumentacja] (http://msdn.microsoft.com/en-us/library/ms174335 (v = sql.110) .aspx) dla instrukcji 'INSERT'? Pokazuje to, że CTE występuje przed 'INSERT' i zawiera przykład użycia CTE. – Pondlife