我试图使用具有以下结构的SQL查询:CTE不正确的语法附近“)”
WITH
table1
AS (QUERY1)
, table2
AS (QUERY2)
, myCTE (COLUMNS OF THE CTE)
AS (CTE_QUERY)
SELECT * FROM myCTE),
,anotherCTE...
我收到一条“不正确的语法错误附近‘)’附近‘myCTE)’ 。
我试图使用具有以下结构的SQL查询:CTE不正确的语法附近“)”
WITH
table1
AS (QUERY1)
, table2
AS (QUERY2)
, myCTE (COLUMNS OF THE CTE)
AS (CTE_QUERY)
SELECT * FROM myCTE),
,anotherCTE...
我收到一条“不正确的语法错误附近‘)’附近‘myCTE)’ 。
的错误是很清楚你有一个额外)
:
myCTE)
应该
myCTE
...并附加一个逗号,以及'anotherCTE'之后的内容选择。将永远不会工作... – HoneyBadger
这将更正错误,但我在下一个逗号'anotherCTE'中收到另一个错误消息,我收到消息“附近的语法错误,''。* @HoneyBadger – Platus
上有SELECT *一个额外的 “)” FROM myCTE
WITH
table1
AS (QUERY1)
, table2
AS (QUERY2)
, myCTE (COLUMNS OF THE CTE)
AS (CTE_QUERY)
SELECT * FROM myCTE),
,anotherCTE...
正如你已经发现,多余的)不应该有:
WITH
table1
AS (QUERY1)
, table2
AS (QUERY2)
, myCTE (COLUMNS OF THE CTE)
AS (CTE_QUERY)
SELECT * FROM myCTE
您报告的第二个错误是因为您从上述CTE中选择后尝试执行另一个CTE。你不能这样做,但结束CTE与SELECT
声明。
如果你以某种方式需要AnotherCTE什么,你能解决的你已经做了,像这样的SELECT
事先声明它:
WITH
table1
AS (QUERY1)
, table2
AS (QUERY2)
, myCTE (COLUMNS OF THE CTE)
AS (CTE_QUERY)
,anotherCTE...
SELECT * FROM myCTE
然而,这将意味着你并不真的需要anotherCTE到首先。如果您确实需要它,只需将SELECT
声明向下移动即可成为查询中的最终声明。
显示您的实际代码或合理缩短它有相同的问题。 –
你究竟在做什么?为什么选择后需要另一个CTE? – HoneyBadger
实际上,整个查询是通过在C#代码中组装子查询来构建的,这就是为什么我有很多CTE,查询是使用CONNECT BY在Oracle中编写的,因此我将它们转换为CTE ... @HoneyBadger – Platus