Создание представлений с помощью CTE - ошибка «Неверный синтаксис около Go» - PullRequest
0 голосов
/ 30 января 2020

От этот ответ здесь Я понимаю, что использование GO после создания CTE и до CREATE VIEW теоретически должно иметь дело с ошибкой:

CREATE VIEW MUST BE THE ONLY STATEMENT IN THE BATCH

Однако я получаю Incorrect Syntax Near GO ошибка сейчас, и я не уверен, по какой причине.

Мой код упрощен ниже, но все; () пунктуация, как у меня это

with RESULT1 as (
                code here
                ),
with RESULT2 as (
                code here
                ),
with RESULT3 as (
                code here
                ),
with RESULT4 as (
                code here
                )

GO

create view TestingView as 
            select RESULT4.*
            from RESULT4

Ответы [ 2 ]

3 голосов
/ 30 января 2020

Синтаксис для нескольких CTE:

with RESULT1 as (
                code here
                ),
     RESULT2 as (
                code here
                ),
     RESULT3 as (
                code here
                ),
     RESULT4 as (
                code here
                )
SELECT . . .
FROM . . .;

Нет GO. CTE не являются временными таблицами.

Если вы хотите создать представление, оно отправляется до WITH. Или другой способ сказать, что CTE связаны с SELECT, а не с CREATE VIEW.

0 голосов
/ 30 января 2020

Спасибо за ответы, проблема имела смысл для меня, и я решил ее, используя jarlh, указывая, что WITH должен быть определен в CREATE VIEW

Итак, я пошел из этого:

with RESULT1 as (
                code here
                ),
with RESULT2 as (
                code here
                ),
with RESULT3 as (
                code here
                ),
with RESULT4 as (
                code here
                )

GO

create view TestingView as 
            select RESULT4.*
            from RESULT4

На это (что работает):

create view TESTVIEW as

with RESULT1 as (
                code here
                ),
with RESULT2 as (
                code here
                ),
with RESULT3 as (
                code here
                ),
with RESULT4 as (
                code here
                )

select RESULT4.*
from RESULT4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...