Time 如何合并Teradata中的时间字段?

Time 如何合并Teradata中的时间字段?,time,teradata,coalesce,Time,Teradata,Coalesce,我正在尝试运行以下代码: SELECT a.job_name , coalesce(b.target_time, cast('08:00:00' as time(2))) sla_time FROM ud812.slarpt_job_level_info a left outer join ( select job_name, target_time from ud812.slarpt_job_target_times qualify row_number()

我正在尝试运行以下代码:

SELECT a.job_name
     , coalesce(b.target_time, cast('08:00:00' as time(2))) sla_time

FROM ud812.slarpt_job_level_info a
left outer join ( 
   select job_name, target_time
   from ud812.slarpt_job_target_times 
   qualify row_number() over (partition by job_name 
                              order by established_date desc) = 1
   ) b
on (a.job_name = b.job_name)
where  a.display_on_sla_report = 'Y' 
   and a.job_type = 'LD'
   and a.decom_date is null
在执行此操作时,我得到错误“Select Failed 3800:THEN/ELSE表达式中的数据类型不匹配”。 这与我对coalesce的使用有关

当我检查我的数据类型时:从ud812中选择类型(目标时间)。slarpt_job_target_times qualified…我得到时间(2)。 我尝试了几种方法来调整我的代码

这些包括:使用不同的数据类型,例如时间(6)。 我甚至尝试了以下方法,但是sla_time的类型返回为整数

SELECT a.job_name
      , cast(coalesce(b.target_time, '08:00:00') as time(2)) sla_time

FROM ud812.slarpt_job_level_info a
left outer join ( 
   select job_name, cast(target_time as char(8)) as target_time
   from ud812.slarpt_job_target_times 
   qualify row_number() over (partition by job_name 
                              order by established_date desc) = 1
   ) b
on (a.job_name = b.job_name)
where  a.display_on_sla_report = 'Y' 
   and a.job_type = 'LD'
   and a.decom_date is null
最后,我尝试为每个作业名称设置一个默认时间上午8点。 想法

我还尝试了以下方法,但当我在列中键入()时,它返回的是一个整数,而不是时间(2)


在下面的测试用例中,当使用格式
TIME'00:00:01'
作为NULL的替换值时,
COALESCE()
起作用

CREATE VOLATILE TABLE MyTable, NO FALLBACK
( MyID SMALLINT NOT NULL,
  MyTime TIME(2)
)
PRIMARY INDEX (MyID) 
ON COMMIT PRESERVE ROWS;

INSERT INTO MyTable VALUES (1, TIME '01:23:45');
INSERT INTO MyTable VALUES (2, NULL);

SELECT *
FROM MyTable;

SELECT MyID
     , COALESCE(MyTime, TIME '23:45:01')
 FROM MyTable;

目标数据库是Teradata 13.x表
ud812.slarpt\u job\u Target\u times
中列
Target\u time
的确切数据类型是什么?在SQL Assistant中,执行
show select*From ud812.slarpt\u job\u target\u times
以查看定义。target\u TIME TIME(2)不为空,您如何运行此查询(SQL Assistant,BTEQ)?第一个例子对我来说效果很好。。。
CREATE VOLATILE TABLE MyTable, NO FALLBACK
( MyID SMALLINT NOT NULL,
  MyTime TIME(2)
)
PRIMARY INDEX (MyID) 
ON COMMIT PRESERVE ROWS;

INSERT INTO MyTable VALUES (1, TIME '01:23:45');
INSERT INTO MyTable VALUES (2, NULL);

SELECT *
FROM MyTable;

SELECT MyID
     , COALESCE(MyTime, TIME '23:45:01')
 FROM MyTable;