两个日期之间的Teradata最小值

两个日期之间的Teradata最小值,teradata,Teradata,嗨,我对teradata比较陌生。我有一行有两个日期。我需要得到这两个日期之间的最小值,并显示为第三个日期。日期为YYYYMMDD格式。这是所有的可能性 示例表 col1--date1--date2 123--20140802--20140619 124--20140802--0 124--0--20140802 125--0--0 我需要将我的结果设置为 col1--date1--date2--min\u日期 123--20140802--20140619--2014年6月19日 124--2

嗨,我对teradata比较陌生。我有一行有两个日期。我需要得到这两个日期之间的最小值,并显示为第三个日期。日期为YYYYMMDD格式。这是所有的可能性

示例表

    col1--date1--date2
  • 123--20140802--20140619
  • 124--20140802--0
  • 124--0--20140802
  • 125--0--0
我需要将我的结果设置为

    col1--date1--date2--min\u日期
  • 123--20140802--20140619--2014年6月19日
  • 124--20140802--0--2014年8月2日(非零为最短日期)
  • 124--0--20140802--2014年8月2日(非零为最短日期)
  • 125--0--0--?
这就是我能想到的

select col1, date1, date2, 
case 
     when date1 <> 0 and date2 = 0 then  cast((date1 - 19000000) as date)
     when date1  = 0 and date2 <> 0 then  cast((date2 - 19000000) as date)
     when date1 = 0 and date2  = 0 then cast(null as date)
     when date1  > date2 
            then 
                cast((date2 - 19000000) as date) 
            else 
                 cast((date1 - 19000000) as date)
end as min_date
非常感谢您的帮助。
提前感谢。

案件可简化为

CAST(CASE
        WHEN date1 = 0 AND date2 = 0 THEN NULL
        WHEN date1 > date2 THEN date1
        ELSE date2
     END - 19000000 AS DATE) AS min_date
格式化日期:

min_date (FORMAT 'mmm,byyyy') (CHAR(9)) 

如果你拿出那个大的case语句,你的查询是如何形成的?没有case语句,查询速度非常快。谢谢。我会试试这个。
min_date (FORMAT 'mmm,byyyy') (CHAR(9))