我正在使用Microsoft SQL - 我需要创建一个可以提取大量数据的视图 - 大约100列,但为了提高效率,我必须先在3-5个不同的连接上过滤数据。没有几个临时表,没有干净的方法来做到这一点。但这种观点似乎不允许我。它只是说"不正确的sytax附近' 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
...
)
答案 0 :(得分:1)
在SQL Server中,您不能在视图中拥有临时表。正如documentation所说:
视图定义中的SELECT子句不能包含以下内容:
。 。
- 对临时表或表变量的引用。
但是,您应该能够使用公用表表达式(CTE)和子查询来表达您的视图。如果您确实发现需要临时表,那么您可以使用表变量和表值函数。
答案 1 :(得分:-2)
不要创建视图 - 创建存储过程!