3
在MSSQL 2008中使用多個CTE時,我通常用逗號分隔它們。Teradata SQL語法 - 公用表表達式
但是,當我在Teradata環境中嘗試此操作時,出現語法錯誤。
工程在MS SQL:
WITH CTE1 AS
(SELECT TOP 2 Name FROM Sales.Store)
,CTE2 AS
(SELECT TOP 2 ProductNumber, Name FROM Production.Product)
,CTE3 AS
(SELECT TOP 2 Name FROM Person.ContactType)
SELECT * FROM CTE1,CTE2,CTE3
現在,試圖將投入Teradata的語法:
WITH RECURSIVE CTE1 (Name) AS
(SELECT TOP 2 Name FROM Sales.Store)
,RECURSIVE CTE2 (ProductNumber, Name) AS
(SELECT TOP 2 ProductNumber, Name FROM Production.Product)
,RECURSIVE CTE3 (Name) AS
(SELECT TOP 2 Name FROM Person.ContactType)
SELECT *
FROM CTE1,CTE2,CTE3
語法錯誤,期望像一個名稱或Unicode的分隔間 標識符「 ,'和'RECURSIVE'關鍵字。
第2次嘗試(不使用遞歸多次)與定義
WITH RECURSIVE CTE1 (Name) AS
(SELECT TOP 2 Name FROM Sales.Store)
,CTE2 (ProductNumber, Name) AS
(SELECT TOP 2 ProductNumber, Name FROM Production.Product)
,CTE3 (Name) AS
(SELECT TOP 2 Name FROM Person.ContactType)
SELECT *
FROM CTE1,CTE2,CTE3
多不被支持。
第二次嘗試是正確的ANSI SQL語法,但顯然Teradata不支持這一點(至少這是我將如何解釋錯誤消息「*不支持*」) – 2013-03-27 15:18:32