我在利用Oracle内的合并功能时遇到问题。我正在将数据库切换到Oracle时遇到问题。
这是我想运行的内容: 原始查询(ibm)中的代码
,COALESCE(period_dt, CAST('01-01-1900' AS DATE)) AS PERIOD_DT
在此列中,它返回该列中的period_dt,但是如果没有任何内容,null,0等,则返回的值为日期格式的以下值:01/01/1900
我尝试了以下选项:
COALESCE(TO_DATE(period_dt, 'mm/dd/yyyy'), TO_DATE('01/01/1900', 'mm/dd/yyyy')) period_dt
,case when period_dt = 0 then to_date('01-01-1900', 'mm/dd/yyyy')
when period_dt = '' then to_date('01-01-1900', 'mm/dd/yyyy')
when period_dt = NULL then to_date('01-01-1900', 'mm/dd/yyyy')
else to_date(period_dt,'mm/dd/yyyy')
END period_dt
使用某些组合,我遇到了从“无效月份”到“不一致的数据类型:预期的DATE得到了NUMBER”的错误,并且由于我无法在select语句中运行此错误,因此我不完全确定我会如何将其放在groupby语句中。您可以提供的任何帮助都会很棒。
答案 0 :(得分:2)
您可以在Oracle中使用ANSI日期文字:
, COALESCE(period_dt, DATE '1900-01-01') AS PERIOD_DT
period_dt
已经是一个日期。如果已满,则显示它;如果为空,则显示1900年1月1日。