cte 的对象名称无效

Invalid object name for cte

我在尝试 运行 这个 cte

时收到以下错误

Invalid Object Name 'cte'

使用以下 CTE 语句时出错

WITH cte (LOC_ID, [Description], LOC_TYPE)
AS
(
    select LOC_ID, DESCR, LOC_TYPE
    FROM [APOLLO].[dbo].[TBL_STATIC_DATA_LOCATIONS_MERLIVE]
    WHERE LOC_TYPE = 'DC'
) 
select * from cte

我正在使用 Microsoft SQL Server Management Studio。

缺少分号“;”

;WITH cte (LOC_ID, [Description], LOC_TYPE)
AS
(

select LOC_ID,DESCR,LOC_TYPE
FROM [APOLLO].[dbo].[TBL_STATIC_DATA_LOCATIONS_MERLIVE]
WHERE LOC_TYPE = 'DC'

)

SELECT * FROM cte

CTE 的定义要求 CTE 本身之前的命令必须以分号结尾(msdn 文档,备注,第 6 条)所以如果您的代码是一批:

SELECT a, c, f FROM TABLE; -- <--- mind this semicolon

WITH cte (LOC_ID, [Description], LOC_TYPE)
AS
(
    select LOC_ID, DESCR, LOC_TYPE
    FROM [APOLLO].[dbo].[TBL_STATIC_DATA_LOCATIONS_MERLIVE]
    WHERE LOC_TYPE = 'DC'
) 
select * from cte;

通常的技巧是写;WITH,但正确的方法是用分号结束命令。