Преобразование оператора Access IIF в оператор Oracle - PullRequest
0 голосов
/ 14 января 2019

Кто-нибудь знает, как преобразовать оператор Access SQL IIF в оператор Oracle / SSMS CASE? Заранее спасибо. Пожалуйста, смотрите выражение ниже

 (Type NOT IN ('Swap') AND Mat_Date <= Eff_Date) 
 OR (Type = 'SWAP' AND iif(First_Date_pay < First_Date_rec, First_Date_pay, 
 First_Date_rec) < DateAdd("d", 150, Trd_Date) AND Mat_Date <= Eff_Date) 

1 Ответ

0 голосов
/ 14 января 2019

Не используйте case из iif() в предложении where. Вместо этого просто используйте обычную логическую логику. В вашем случае вам просто нужна функция least() (при условии, что значения не NULL):

where (Type not in ('Swap') and Mat_Date <= Eff_Date
      ) or
      (Type = 'SWAP' and
       least(First_Date_pay, First_Date_rec) < Trd_Date + interval '150' day and
      Mat_Date <= Eff_Date
     ) 
...