Синтаксис SQL Teradata – общие выражения таблицы

При использовании нескольких CTE в MSSQL 2008 я обычно разделяю их запятой.

Но когда я пытаюсь это сделать в среде 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-я попытка (без использования 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 не поддерживаются.

Несколько версий CTE поддерживаются в версии 14.0 Teradata. Вы можете загрузить TD v14 для VMware с веб-сайта Teradata Developer Network и проверить его.