#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