【发布时间】:2018-03-19 17:18:52
【问题描述】:
我有一个正常工作的 CTE 查询。我在一个应用程序中使用这个查询,它在它上面选择并给出错误
WITH 附近的语法不正确
有什么方法可以在 WITH 之上进行选择吗?
select(columns) from
(WITH CTE AS(
#code
))
【问题讨论】:
标签: sql sql-server tsql common-table-expression
我有一个正常工作的 CTE 查询。我在一个应用程序中使用这个查询,它在它上面选择并给出错误
WITH 附近的语法不正确
有什么方法可以在 WITH 之上进行选择吗?
select(columns) from
(WITH CTE AS(
#code
))
【问题讨论】:
标签: sql sql-server tsql common-table-expression
很遗憾,SQL Server 不支持这种语法 DBFiddle Demo。你需要重写你的查询:
WITH CTE AS(
#code
)
SELECT *
FROM CTE;
或者用视图包装你的查询并从中选择。
【讨论】:
先声明 CTE,然后在下面的语句中从中选择
;WITH cte AS
(
select 1 AS col
)
SELECT col
FROM cte
【讨论】:
删除 with 子句并执行
select col1, col2, col3 from
(select col1, col2, col3 from table ) as CTE
唯一的缺点是派生表只能使用一次,不像真正的 CTE
【讨论】: