【问题标题】:Teradata sql query with a case-SELECT Failed. 3706带有 case-SELECT 的 Teradata sql 查询失败。 3706
【发布时间】:2017-01-10 08:53:40
【问题描述】:

我正在尝试在 Teradata 中创建一个查询,但它让我 REPLACE VIEW 失败。 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

【问题讨论】:

  • 您使用的是哪个 Teradata 版本?
  • 在第二种情况下删除逗号(就在 FROM 之前)。

标签: sql join case teradata


【解决方案1】:

Teradata 支持子字符串的两种变体:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-26
    • 2014-01-22
    • 2015-09-04
    • 1970-01-01
    • 2018-04-15
    • 2023-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多