2015-03-25 11 views
0

Рассмотрим следующую таблицу:обновление базы данных запроса

Employee(empid, emp_name,emp_dob,emp_doj,emp_basicsalary,emp_medallowance). 

Создать запрос на обновление, который увеличивает зарплату сотрудника на следующих условиях.

If basic salary is < Rs.50,000 
    increment=20% 
else 
    increment=15% 

Если два обновления выполняются запросы по одному для каждого

+0

использовать случай, когда в обновлении –

+0

@AmeyaDeshpande я не имею ни малейшего представления о том случае :(Этот вопрос только что дал мне искать в Интернете и делать это я буду.. будьте благодарны, если вы поможете мне в этом –

ответ

1

Вы можете использовать только один запрос на обновление с CASE WHEN, как показано ниже:

UPDATE Employee 
SET emp_basicsalary = CASE WHEN emp_basicsalary < 50,000 
          THEN emp_basicsalary * 1.2 
          ELSE emp_basicsalary * 1.15 
         END 
+2

Удалите запятую из ваших 50 000;) –

1

Попробуйте это:

update Employee 
set salary = case when salary < 50000 then salary * 1.2 
      else salary * 1.15 
      end 

В MS Access вы можете попробовать следующее:

update Employee 
set salary = IIF(salary < 50000, salary*1.5, salary * 1.15) 

или вы можете попробовать использовать Switch

UPDATE Employee 
SET salary= Switch(
    salary < 50000, salary * 1.2, 
    salary >= 50000, salary * 1.15, 
    ); 

Обратите внимание, что MS Access не имеет Case when then

0

первый запуск это один

UPDATE Employee SET emp_basicsalary = 1,15 * emp_basicsalary где emp_basicsalary> = 50000;

И тогда

ОБНОВЛЕНИЕ Employee SET emp_basicsalary = 1,2 * emp_basicsalary где emp_basicsalary < 50000;

+0

Не нужно иметь два оператора обновления. Посмотрите на другие ответы :) –

+0

требуется один запрос на обновление, так как RahulTripathi сказал и @RahulTripathi thanx для справки, но в запросе у него есть некоторые проблемы. Синтаксическая ошибка синтаксиса с использованием ms-доступа 2013 –

+0

@MuhammadUsman: - Обновлен мой ответ с помощью версии MS Access. Проверь это! –

2

Это работает для вас:

update Employee 
set salary = case 
when salary < 50000 then salary * 1.20 
else salary * 1.15 
end; 
+0

спасибо за ur reply.but, у него есть некоторая проблема: синтаксическая ошибка (отсутствует оператор) в выражении запроса slasry <50000 then salry * 1.2 else pay * 1.5 –

+0

В вашем запросе может быть ошибка типа - вы набрали другую колонку для «зарплаты». просто скопируйте и вставьте эту строку, обновите Employee set pay = case , когда оклад <50000, а затем заработная плата * 1.20 еще заработная плата * 1.15 end –

Смежные вопросы