У меня ниже case when
условие в запросе, которое как-то не удовлетворяется.
Я хочу написать логику в case when
в select
запросе так, чтобы, когда LAST_TRADEABLE_DT
не было нулевым, принималосьLAST_TRADEABLE_DT
, когда LAST_TRADEABLE_DT
равно нулю, то должно выполняться условие ниже:
WHEN t.opt_exer_typ = 'American'
AND t.mic_exch_code = 'XDMI'
THEN t.opt_expire_dt - 1
WHEN t.opt_exer_typ != 'American'
THEN t.opt_expire_dt
Я написал запрос ниже, но я получаю last_tradedate
как ноль. Я никогда не хочу, чтобы last_tradedate
вернул ноль.
SELECT
t.opt_exer_typ,
t.mic_exch_code,
t.ID_BB_GLOBAL,
t.LAST_TRADEABLE_DT,
t.OPT_EXER_TYP,
(
CASE
WHEN t.LAST_TRADEABLE_DT is not null
THEN t.LAST_TRADEABLE_DT
WHEN t.LAST_TRADEABLE_DT IS NULL
AND t.opt_exer_typ = 'American'
AND t.mic_exch_code = 'XDMI'
THEN t.opt_expire_dt - 1
WHEN t.LAST_TRADEABLE_DT IS NULL
AND t.opt_exer_typ != 'American'
THEN t.opt_expire_dt
END) last_tradedate,
t.OPT_EXPIRE_DT
FROM
TEST_AGG t where t.ID_BB_GLOBAL = 'XXX1234';