在SQL Server CTE中是否有任何方法可以执行select on of WITH子句?
我有一个正常工作的CTE查询。我在一个应用程序中使用这个查询,该应用程序在上面进行选择并给出错误信息 与的语法不正确 有什么方法可以让我在上面选择吗在SQL Server CTE中是否有任何方法可以执行select on of WITH子句?,sql,sql-server,tsql,common-table-expression,Sql,Sql Server,Tsql,Common Table Expression,我有一个正常工作的CTE查询。我在一个应用程序中使用这个查询,该应用程序在上面进行选择并给出错误信息 与的语法不正确 有什么方法可以让我在上面选择吗 select(columns) from (WITH CTE AS( #code )) 不幸的是,SQL Server不支持这种语法。您需要重写查询: WITH CTE AS( #code ) SELECT * FROM CTE; 或者用视图包装查询并从中选择。首先声明CTE,然后在下面的语句中从中选择 ;WITH cte
select(columns) from
(WITH CTE AS(
#code
))
不幸的是,SQL Server不支持这种语法。您需要重写查询:
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我的查询在执行时工作正常。这里的问题是我无法控制的应用程序,它在我的查询上执行select操作。@gdanton我将在CTE上创建视图,并允许应用程序查询视图。好的。谢谢你的回复。