1

Trying to execute in SQLAssitant (v 15.x Teradata):

WITH   TEMP1 (EMP_ID,E_NAME,E_SAL) AS (WITH TEMP (EMP_ID,E_NAME,E_SAL) AS (SELECT EMP_ID,E_NAME,E_SAL FROM EMP_TABLE_TEST)
SELECT EMP_ID,E_NAME,E_SAL FROM TEMP) SELECT EMP_ID,E_NAME,E_SAL FROM TEMP1

Error: SELECT Failed. 6926: definitions, views, triggers or stored procedure

WITH TEMP (EMP_ID,E_NAME,E_SAL) AS (SELECT EMP_ID,E_NAME,E_SAL FROM EMP_TABLE_TEST ) , TEMP1  (EMP_ID,E_NAME,E_SAL) AS (
SELECT EMP_ID,E_NAME,E_SAL FROM TEMP) SELECT  EMP_ID,E_NAME,E_SAL FROM TEMP1

Error: SELECT Failed. 3807: Object 'TEMP' does not exist.

Does Teradata really support Multiple WITH clause or WITH within WITH clause?

I heard it is supported in 14.x higher version but it is not supporting for 15.x.

SNS
  • 485
  • 6
  • 20
Ganesh Kumar
  • 133
  • 1
  • 3
  • 12

2 Answers2

3

The syntax is different (and is the same as in other databases)
With t1 as (...),t2 as (...), t3 as (...) select ...


Currently the reference order is upside-down -
t2 can refer t3 and t1 can refer t2 and t3.
The "right" order will be supported in TD16.

David דודו Markovitz
  • 42,900
  • 6
  • 64
  • 88
0

This has been fixed in Teradata 16. Please see the release summary chapter 2.

http://www.info.teradata.com/doclist.cfm?RetainParams=Y&FilterCall=Y&selDocType=100

Previously, when a nonrecursive WITH clause defined multiple CTEs, a CTE could only reference a subsequent CTE in the WITH clause. Now, a CTE can reference a preceding or subsequent CTE in the WITH clause.

From Teradata Release Summary for version 16

Tom
  • 4,257
  • 6
  • 33
  • 49
I.Peer
  • 1
  • 1
  • 2