尝试在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。
答案 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版