Teradata是否支持-Multiple With Clause?

时间:2016-11-16 07:35:38

标签: sql teradata with-clause

尝试在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

错误:SELECT失败。 6926:定义,视图,触发器或存储过程

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

错误:SELECT失败。 3807:对象'TEMP'不存在。

Teradata真的支持WITH子句中的Multiple WITH子句或WITH吗?

我听说它在14.x更高版本中得到支持,但它不支持15.x。

2 个答案:

答案 0 :(得分:1)

语法不同(和其他数据库中的相同)
With t1 as (...),t2 as (...), t3 as (...) select ...

目前,参考订单是颠倒的 -
t2可以参考t3,t1可以参考t2和t3 TD16将支持“正确”的订单。

答案 1 :(得分:0)

Teradata 16中已修复此问题。请参阅发布摘要第2章。

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

  

以前,当非递归的WITH子句定义了多个CTE时,CTE只能引用一个   随后的WITH子句中的CTE。现在,CTE可以引用前一个或后一个CTE   WITH子句。

来自Teradata版本摘要16版