Извлечение дня из поля вычисляемой даты в Oracle SQL - PullRequest
0 голосов
/ 05 марта 2019

Я пытаюсь извлечь День из вычисленного поля (Заявление о ситуации), но продолжаю сталкиваться с проблемами. Любой совет приветствуется.

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 Ответ

1 голос
/ 05 марта 2019

Помимо устранения очевидного несоответствия в скобках, запрос можно упростить несколькими способами. Полное выражение 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, поскольку у вас есть только номер дня, а не дата.

...