Giao dịch SQL bằng cách sử dụng VỚI trong TẠO XEM


13

Tôi muốn tạo XEM bằng cách sử dụng mệnh đề VỚI, nhưng thực sự không thể tìm thấy bất kỳ tài liệu tham khảo nào về cú pháp chính xác.

Tôi muốn thứ như thế này

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

Và cú pháp đúng để sử dụng một số mệnh đề CÓ là gì?

Không có gì hữu ích trên MSDN :(

Câu trả lời:


24

CTE đi vào trong xem.

Lấy một truy vấn với CTE

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

Chỉ cần thêm TẠO XEM NHƯ .. GO

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

MSDN không mô tả nhiều CTE (Xem ví dụ j)

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

Mẹo cho tôi là loại bỏ một số dấu ngoặc đơn. create view myView as ( select ... )hoạt động và create view myView as with tempTbl as select ...làm việc nhưng create view myView as ( with tempTbl as select ... )là một lỗi cú pháp. `
Molomby

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

Chào mừng đến với dba.se và cảm ơn sự đóng góp. Để bạn biết, câu hỏi ở đây thực sự quá cơ bản cho trang web và có thể sẽ bị đóng - nhưng đó không phải là phản ánh cho câu trả lời của bạn :) Với các kỹ năng của bạn trên SQL Server và các bài đăng sẽ có nhiều câu hỏi về chủ đề hơn ngay lập tức đường phố của bạn, vì vậy tôi hy vọng bạn dính xung quanh.
Jack Douglas

Btw postgres là tuyệt vời! (nói như một DBA của Oracle) Tôi chắc chắn bạn đồng ý :)
Jack Douglas

1
Rất vui khi ở đây. Tôi nghĩ sẽ thật xấu hổ khi xem xét bất kỳ câu hỏi nào quá cơ bản; mặc dù tôi đồng ý nó có thể không phải là một câu hỏi quản trị và có thể thuộc về một diễn đàn khác, có lẽ chính nó là trao đổi ngăn xếp. Dù sao cũng cảm ơn!
Scott Herbert

Tôi nghĩ bạn đúng SO có lẽ là tốt nhất, nhưng chúng tôi cố gắng và linh hoạt một chút, đặc biệt nếu mọi người đã nỗ lực trả lời vào thời điểm chúng tôi nhận thấy :)
Jack Douglas
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.