2013-03-27 5 views
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 

자, 테라 데이타 구문에 넣어 시도 : 이름처럼,

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 '키워드가 포함됩니다. (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 

복수는 지원되지 않습니다.

+0

두 번째 시도가 올바른 ANSI SQL 구문이지만 분명히 teradata가이를 지원하지 않습니다 (적어도 "* 지원되지 않음 *"오류 메시지를 해석하는 방법) –

답변

3

여러 CTE는 버전 14.0의 Teradata에서 지원됩니다. Teradata Developer Network 웹 사이트에서 VMware 용 TD v14를 다운로드하여 테스트 할 수 있습니다.