Teradata SQL Syntax - Common Table Expressions

被刻印的时光 ゝ 提交于 2019-12-12 09:50:05

问题


When using multiple CTE's in MSSQL 2008, I normally separate them with a comma.

But when I try this in a Teradata environment, I get an error with the syntax.

Works in 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

Now, attempting to put into Teradata syntax:

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

Syntax error, expected something like a name or a Unicode delimited identifier between ',' and the 'RECURSIVE' keyword.

2nd attempt (without using RECURSIVE multiple times)

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

Multiple WITH definitions are not supported.


回答1:


Multiple CTEs are supported on version 14.0 of Teradata. You can download TD v14 for VMware from the Teradata Developer Network web site and test it out.



来源:https://stackoverflow.com/questions/15661416/teradata-sql-syntax-common-table-expressions

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!