带有案例选择的Teradata sql查询失败。3706

带有案例选择的Teradata sql查询失败。3706,sql,join,case,teradata,Sql,Join,Case,Teradata,我试图在Teradata中创建一个查询,但它给了我替换视图失败。3706:语法错误:应在“')和“,”之间 replace VIEW view as select a.ID_CD, a.SEX , x.BIRTHDATE as BIRTHDATE_DT, case when (substring((x.cfisc_de), 12 , 5)=' ') then

我试图在Teradata中创建一个查询,但它给了我替换视图失败。3706:语法错误:应在“')和“,”之间

    replace  VIEW  view as 
select

a.ID_CD,                    
a.SEX   ,                   
x.BIRTHDATE as BIRTHDATE_DT,                    
case when (substring((x.cfisc_de), 12 , 5)=' ') then x.cfisc_de else null end as PIVA_CD,   
case when (substring((x.cfisc_de), 12 , 5)<>' ') then x.cfisc_mask_de else null end as CFISC_CD,               



FROM  table1 a
INNER JOIN table2  x
ON a.ID_CD=x.ID_CD
将视图替换为
选择
a、 身份证,
a、 性,
x、 出生日期作为出生日期,
当(子字符串((x.cfisc_de),12,5)=''时,则x.cfisc_de else null结束为PIVA_CD,
当(子字符串((x.cfisc_de),12,5)')然后x.cfisc_mask_de else null结束为cfisc_CD时,
来自表1 a
内连接表2 x
在a.ID\u CD=x.ID\u CD上

Teradata支持两种不同的子字符串:

SUBSTRING(col FROM n FOR m)
SUBSTR(col, n , m)

你写的是两者的混合体。根据某些ODBC设置,这可能会起作用(ODBC驱动程序会自动将其更改为有效的SQL,但仅在SELECT中),但在创建或使用.NET/JDBC/CLI时会失败。

Teradata支持两种不同的子字符串:

SUBSTRING(col FROM n FOR m)
SUBSTR(col, n , m)

你写的是两者的混合体。根据某些ODBC设置,这可能会起作用(ODBC驱动程序会自动将其更改为有效的SQL,但仅在SELECT中),但在创建或使用.NET/JDBC/CLI时会失败。

您使用的是哪个Teradata版本?在第二个案例后删除逗号(就在从之前)。您使用的是哪个Teradata版本?在第二个案例后删除逗号(就在从的前面)。