CREATE VIEW返回错误“日期与定义的类型名称不匹配”,但实际查询正常运行

用户3867061

使用Teradata SQL,我针对加载的“订单历史记录”表运行查询,该表涉及查找发生特定更改的最新订单。由于Order_Date以可变长度加载为VARCHAR时,我遇到了一些麻烦,但是我通过使用CASE WHEN来对齐日期的字符长度并将列强制转换为时间戳来解决了这个问题。

我现在想将此查询另存为VIEW,但是CREATE VIEW语句失败,因为日期“与定义的类型名称不匹配”。我不确定为什么在实际语句运行正常时会发生此错误?

有人可以帮我指出我所缺少的吗?

Create VIEW DB.ViewName as (

select Serv_No, Serv_Attrib, Order_Activ_Date
from (
select Serv_No, Serv_Attrib,
    cast
(
CASE WHEN char_length(Order_Act_Date) = 21 AND index(order_act_Date,' ') = 10
    THEN '0' || '' || Order_Act_Date

        WHEN char_length(Order_Act_Date) = 20 AND index(order_act_Date,' ') = 10
    THEN '0' || '' || substr(Order_Act_Date,1,10) || '0' || substr(Order_Act_Date,length(order_act_Date) - 10 + 1,10)

        WHEN char_length(Order_Act_Date) = 21 AND index(order_act_Date,' ') = 11
      THEN substr(Order_Act_Date,1,10) || ' 0' ||    substr(Order_Act_Date,length(order_act_Date) - 10 + 1,10)

        WHEN Order_Act_Date IS NULL
    THEN '01/01/1900 11:00:00 AM'           

        WHEN char_length(Order_Act_Date) = 22
    THEN Order_Act_Date

END as timestamp format 'DD/MM/YYYYBHH:MI:SSBT'

) as Order_Activ_Date
    from DB.Table
    Qualify
    Coalesce( max(Serv_Attrib) OVER (Partition By Serv_No ORDER     BY ORDER_ACTIV_DATE DESC ROWS BETWEEN 1 FOLLOWING AND 1 FOLLOWING
                        ) ,Serv_Attrib || 'x') <> Serv_Attrib
                        ) as bb


Qualify rank() over (partition by Serv_No ORDER BY Order_Activ_Date        DESC) = 1

) 
牙齿

您可能在ODBC连接中运行它,这是由于LENGTH函数所致。LENGTH是ODBC函数,已由具有正确Teradata SQL的ODBC驱动程序代替,但仅适用于SELECT而不在DDL中。

因此,只需将其余的更改为LENGTH即可CHAR_LENGTH

顺便说一句,如果您使用的是TD14,则可以使用Oracle的TO_TIMESTAMP,它在单位数字的天/小时/分钟/秒方面更灵活。以下将强制所有情况,而无需添加前导零:

TO_TIMESTAMP(Order_Act_Date, 'DD/MM/YYYY HH:MI:SS AM')

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

/create 处的类型错误

来自分类Dev

“HashAlgorithm”不包含“Create”的定义

来自分类Dev

SQLite CREATE查询中的错误

来自分类Dev

MySQL Create函数返回错误

来自分类Dev

匹配File :: create的结果

来自分类Dev

Laravel Model :: create()不返回主键

来自分类Dev

SQL编译错误:表达式类型与列数据类型不匹配,期望TIMESTAMP_NTZ(9)但列CREATE_DT却获得TIMESTAMP_LTZ(9)

来自分类Dev

在查询中获取CREATE TABLE定义

来自分类Dev

CREATE TABLE SQL查询的语法错误

来自分类Dev

Return Observer.create不返回,并且旁边的代码无法使用RxSwift正常工作

来自分类Dev

ZipArchive :: CREATE无法正常工作

来自分类Dev

find_or_create_by-不更新

来自分类Dev

PThread Create 不创建线程

来自分类Dev

oData.create 的日期格式

来自分类Dev

类型错误:无法读取 express、postgres、sequelize 中未定义错误的属性“create”

来自分类Dev

错误:类型错误:无法读取 stripe.fileUploads.create 上未定义的属性“创建”

来自分类Dev

UserManager <ApplicationUser> .Create()返回null

来自分类Dev

从pthread create返回的代码是11

来自分类Dev

MediaPlayer.create() 返回 NULL

来自分类Dev

Codeigniter中的Mysql“ CREATE VIEW”

来自分类Dev

CitusDB是否支持`CREATE VIEW`?

来自分类Dev

Codeigniter中的Mysql“ CREATE VIEW”

来自分类Dev

CitusDB是否支持`CREATE VIEW`?

来自分类Dev

SQL CREATE VIEW with for in for 和 SELECTS

来自分类Dev

MPI_Cart_create错误

来自分类Dev

Snowflake-名称为日期变量的CREATE表

来自分类Dev

如何使用自定义错误枚举来修复不匹配的返回类型?

来自分类Dev

运行BAPI_GOODSMVT_CREATE时,MB_CREATE_GOODS_MOVEMENT返回subrc = 5

来自分类Dev

与 pthread_create (C) 不兼容的指针类型

Related 相关文章

热门标签

归档