从Oracle SQL中的计算日期字段中提取日期

时间:2019-03-05 17:42:39

标签: sql oracle date case calculated-columns

我正在尝试从计算的字段(案例陈述)中提取Day,但我一直遇到问题。任何建议表示赞赏。

SELECT 
EXTRACT(DAY FROM (
CASE
 WHEN TYP IN ('Swap')
 THEN LEAST(TRD_DT, VAL_DT)
 ELSE LEAST(EFF_DT, VAL_DT)))
END AS ISS_DT
FROM HA

1 个答案:

答案 0 :(得分:1)

除了解决明显的括号不匹配问题外,还可以通过几种方式简化查询。完整的CASE表达式不需要放在括号中(尽管使用它们可能对某些读者有帮助)。无论如何,由于LEAST的第二个参数在两种情况下都相同,因此可以进一步简化计算。我会这样写代码片段:

select extract(day from
          least(case when typ in ('Swap') then trd_dt else eff_dt end, val_dt)
       ) as iss_day
from   ha

我将ISS_DAY用作列名,而不是ISS_DT,因为您实际上只有一个天数,而不是一个日期。