管理层已决定将薪金+公款为<= 1500的员工加薪20%,并将薪金+ comm> 1500的员工加薪10%
获取将显示其当前Salary + comm和修订后的Salary + comm的员工列表
SELECT first_name FROM employee
UPDATE employee SET salary=salary*20/100
WHERE (salary+comm)<1500
答案 0 :(得分:1)
您的查询存在语法问题。您不能以尝试的方式同时使用SELECT和UPDATE。由于您只需要具有当前和递增薪水的员工列表,因此SELECT语句就足够了。
注意:请在脚本中包括employee_id列(如果可用),因为这样做的意义更大,因为多个雇员可以使用相同的名字。
SELECT
first_name,
Salary as Current_Salary,
Comm as Commission,
(Salary + Comm) AS Salary_Plus_Commision,
CASE
WHEN (salary+comm) <= 1500 THEN Salary+(salary*20.0/100)
ELSE Salary+(salary*10.0/100)
END New_Salary
FROM employee
答案 1 :(得分:0)
您没有指定DBMS,但是在SQL中(如在“标准SQL”中一样),不可能将SELECT和UPDATE组合在一起。
但是,使用PostgreSQL,您可以执行以下操作:
UPDATE employee
SET salary = salary * case
when salary + comm <= 1500 then 1.2
else 1.1
end
RETURNING employee_id, first_name, last_name, salary, salary + comm;
您还可以使用returning *
仅显示所有列