增加所有员工'分类薪酬为5.65%,其他人为4.93%

时间:2016-11-10 05:48:52

标签: sql sql-server tsql sql-server-2016

我目前在学校,我有一个单独的项目,需要将所选职位分类的所有员工增加5.65%,其他所有人增加4.93%。这是我到目前为止所拥有的......

UPDATE Employee 
 SET Salary = Salary * 0.0565
WHERE EXISTS (
               SELECT * 
                 FROM Employee
                      INNER JOIN Job
                         ON Employee.Job_ID = job.Job_ID
                            AND job.Job_Classification = 'Retail Sales'
                WHERE Job.Job_ID = Employee.Job_ID
              );

我的问题是,有没有办法可以让它增加5.65%和同一个脚本中的其他人?我觉得它有点像IF THEN ELSE,但我不确定该怎么做。

2 个答案:

答案 0 :(得分:4)

正如@Christopher Trevor所说,它应该是这样的:

UPDATE e 
  SET e.Salary = 
        case when job.Job_Classification = 'Retail Sales' 
             then e.Salary * 0.0565 
             else e.Salary * 0.0493 
         end
from Employee e
inner join Job job on job.Job_ID = e.Job_ID

我没有对此进行测试,因为您尚未发布表格的架构。但它应该指向正确的方向。

答案 1 :(得分:1)

使用case语句。

基本语法是:

UPDATE Employees
 SET Salary = CASE Classification WHEN 'Retail Sales' THEN Do 5.65% ELSE Do 4.93%

您很可能需要在更新中包含联接以从Jobs表中获取分类。

上述语法不正确,但应该给你足够的方向进一步