Transact SQL, используя WITH в CREATE VIEW


14

Я хочу создать VIEW, используя предложения WITH, но на самом деле не могу найти никаких ссылок на правильный синтаксис.

Я хочу что-то подобное

WITH TempTbl AS (SELECT ...)
CREATE VIEW SomeView
SELECT *
FROM TempTbl

И каков правильный синтаксис для использования нескольких предложений WITH?

Ничего полезного на MSDN :(

Ответы:


25

CTE идет в поле зрения.

Возьмите запрос с CTE

WITH cte AS (...) SELECT ...;

Просто добавьте CREATE VIEW AS .. GO

CREATE VIEW
AS
WITH cte AS (...) SELECT ...;
GO

MSDN описывает несколько CTE (см. Пример j)

CREATE VIEW
AS
WITH
   cte1 AS (...),
   cte2 AS (...),
   cte3 AS (...)
SELECT ...
GO

Уловка для меня заключалась в том, чтобы убрать лишние скобки. create view myView as ( select ... )работает и create view myView as with tempTbl as select ...работает, но create view myView as ( with tempTbl as select ... )это синтаксическая ошибка. `
Моломби

6
CREATE VIEW 
someview
AS
WITH CTEstuff AS (SELECT etc)
SELECT * FROM CTESTuff;

добро пожаловать на dba.se и спасибо за вклад. Точно так же, вы знаете, что этот вопрос на самом деле слишком базовый для сайта и, вероятно, будет закрыт - но это не отражается на вашем ответе :) Учитывая ваши навыки работы с SQL Server и postgres, будет гораздо больше вопросов по теме, вплоть до ваша улица, так что я надеюсь, что вы остаетесь вокруг.
Джек говорит, попробуйте topanswers.xyz

Кстати, Postgres - это круто! (говорит как администратор
базы

1
Приятно быть здесь. Я думаю, что было бы стыдно считать любой вопрос слишком простым; хотя я согласен, что это может быть не административный вопрос, а принадлежность к другому форуму, возможно, обмен стеком. Anyhoo спасибо!
Скотт Герберт

Я думаю, что вы правы. ТАК, наверное, лучше, но мы стараемся быть немного гибкими, особенно если люди уже приложили усилия, чтобы ответить к тому времени, когда мы заметили :)
Джек говорит, что попробуйте topanswers.xyz
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.