创建 SQL 视图时我可以有临时表吗?

When creating a SQL view can i have temp tables?

我正在使用 Microsoft SQL -- 我需要创建一个提取大量数据的视图 - 大约 100 列,但为了提高效率,我必须按 3-5 过滤数据首先不同的加入。如果没有几个临时表,就没有干净的方法可以做到这一点。但是这个观点似乎不允许我。它只是说 "incorrect sytax near 'AS'"

我的代码是这样的

CREATE VIEW [dbo].[LV_ViewName] AS

declare @table1 table
(
customer_no int,
name varchar(100),
...
)

其中有几位被关注

来自

declare #work table
(
customer_no int,
name varchar(100),
--    all encompasing data
...
)

在 SQL 服务器中,您不能在视图中有临时 table。正如 documentation 所说:

The SELECT clauses in a view definition cannot include the following:

. . .

  • A reference to a temporary table or a table variable.

但是,您应该能够使用常见的 table 表达式 (CTE) 和子查询来表达您的观点。如果你确实发现你需要临时 tables,那么你可以使用 table 变量和一个 table 值函数。

不要创建视图 - 创建存储过程!