我試圖使用具有以下結構的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