3

MSSQL 2008で複数のCTEを使用する場合、通常はコンマで区切ります。

しかし、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

構文エラー。「、」と「RECURSIVE」キーワードの間に名前またはUnicodeで区切られた識別子のようなものが必要です。

2回目の試行(RECURSIVEを複数回使用せずに)

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

複数のWITH定義はサポートされていません。

4

1 に答える 1

3

Teradataのバージョン14.0では、複数のCTEがサポートされています。VMware用のTDv14は、TeradataDeveloperNetworkのWebサイトからダウンロードしてテストできます。

于 2013-04-03T05:12:30.823 に答える