2017-04-26 16 views
0

我想在SQL服务器上使用几个时间别名的with子句。别名sql的几种用法

例子:

WITH name1 AS (
    SELECT ... 
) 

SELECT * from name1 
SELECT * from name1 ORDER BY name 

这可能吗? 我收到“无效对象名称”错误

+0

改为创建视图。它可以用于不同的查询。 – jarlh

+0

CTE是 其后的语句可以是单个SELECT/INSERT/UPDATE/DELETE,或者一个复合(带有UNION,INTERSECT等) – 2017-04-26 09:05:14

+0

您只能从CTE name1中执行第一个SELECT。第二个SELECT给你错误。 –

回答

1

你正在尝试使用的是CTE,仅在紧随其后的DML

WITH name1 AS (
    SELECT ... 
) 

SELECT * from name1 

那部分将罚款可供使用。下一个select声明将无法访问CTE。您可以尝试使用table variable代替

0

公用表表达式如下语法:

WITH name1 AS 
(
    SELECT ... 
) 

SELECT * from name1 

。如果你想使用CTE 表超过您只能使用一个SELECT语句CTE表有一次,只要您将该CTE表移动到临时表并在所有位置使用该表。