Как написать условие if else if в SQL | Oracle |

#sql #oracle

#sql #Oracle

Вопрос:

Я немного застрял, нужно написать SQL, если еще, если для логики ниже

Как только базовые знания по SQL

Приведенная ниже логика должна быть выведена в SQL-запрос

 if depcost lt;gt; empcost and empcourseid in ('A','B')  then   empnfees=(empvar / empdar) * empcost  else if depcost lt;gt; empcost and empcourseid lt;gt; 'A' then  empnfees=empcost else  empnfees=depcost  

Комментарии:

1. Все ли это столбцы в таблице, которую вы запрашиваете?

2. @Mureinik : Да, все они в таблице : сотрудник

Ответ №1:

Используя CASE выражение, мы можем попробовать:

 CASE WHEN depcost lt;gt; empcost AND empcourseid IN ('A', 'B')  THEN (empvar / empdar) * empcost  WHEN depcost lt;gt; empcost AND empcourseid lt;gt; 'A'  THEN empcost  ELSE depcost END AS empnfees  

Комментарии:

1. Спасибо, Тим, дай мне попробовать

Ответ №2:

Если у вас могут быть NULL ценности, то (что NULL lt;gt; something никогда не бывает правдой):

 CASE WHEN ( depcost lt;gt; empcost  OR (depcost IS NULL AND empcost IS NOT NULL)  OR (depcost IS NOT NULL AND empcost IS NULL)  ) AND empcourseid in ('A','B') THEN empvar / empdar * empcost WHEN ( depcost lt;gt; empcost  OR (depcost IS NULL AND empcost IS NOT NULL)  OR (depcost IS NOT NULL AND empcost IS NULL)  ) AND ( empcourseid lt;gt; 'A'  OR empcourseid IS NULL  ) THEN empcost ELSE depcost END AS empnfees