从 Oracle 中的计算日期字段中提取日期 SQL
Extracting Day From a Calculated Date Field in Oracle SQL
我正在尝试从计算字段(案例陈述)中提取日期,但我将 运行 保留在问题中。任何建议表示赞赏。
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
除了解决明显的括号不匹配问题外,还可以通过几种方式简化查询。完整的 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
,因为您实际上只有日期,而不是日期。
我正在尝试从计算字段(案例陈述)中提取日期,但我将 运行 保留在问题中。任何建议表示赞赏。
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
除了解决明显的括号不匹配问题外,还可以通过几种方式简化查询。完整的 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
,因为您实际上只有日期,而不是日期。