我正在尝试从计算的字段(案例陈述)中提取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
答案 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
,因为您实际上只有一个天数,而不是一个日期。