Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
oracle SQL增加字段值_Sql_Oracle_Oracle11g - Fatal编程技术网

oracle SQL增加字段值

oracle SQL增加字段值,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,您好,我有一个关于SQL oracle的简单问题。如果是IT部门,我需要增加员工7%的工资, 12%属于业务部门, 其他部门为5% 最后显示 修订后的工资保留两位小数 以下是我的员工表: employeeID Dept Salary emp1 IT 2000 emp2 BS 3000 emp3 MK 4000 emp4 EG

您好,我有一个关于SQL oracle的简单问题。如果是IT部门,我需要增加员工7%的工资, 12%属于业务部门, 其他部门为5% 最后显示 修订后的工资保留两位小数 以下是我的员工表:

employeeID      Dept       Salary
emp1             IT         2000
emp2             BS         3000  
emp3             MK         4000
emp4             EG         5000
注:BS=业务部门,MK=营销部门,EG=工程部门

您可以在更新语句中使用表达式。它比解码更详细、更容易解释

比如说,

显示:

SELECT employeeID,
       Dept,
       Salary,
       CASE
          WHEN dept = 'IT' THEN
             salary + (7/100) * salary
          WHEN dept = 'BS' THEN
             salary + (12/100) * salary
          ELSE 
             salary + (5/100) * salary    
       END as "New_Salary"
FROM employees;
UPDATE employees
SET salary=  CASE
                WHEN dept = 'IT' THEN
                   salary + (7/100) * salary
                WHEN dept = 'BS' THEN
                   salary + (12/100) * salary
                ELSE 
                   salary + (5/100) * salary    
              END;
更新:

SELECT employeeID,
       Dept,
       Salary,
       CASE
          WHEN dept = 'IT' THEN
             salary + (7/100) * salary
          WHEN dept = 'BS' THEN
             salary + (12/100) * salary
          ELSE 
             salary + (5/100) * salary    
       END as "New_Salary"
FROM employees;
UPDATE employees
SET salary=  CASE
                WHEN dept = 'IT' THEN
                   salary + (7/100) * salary
                WHEN dept = 'BS' THEN
                   salary + (12/100) * salary
                ELSE 
                   salary + (5/100) * salary    
              END;
使用解码功能:

UPDATE employee
      SET salary = salary*decode (dept,
         'IT', 1.07,
         'BS', 1.12,
         ...,
         1.05)

如果喜欢“谢谢”,但我不想更新,我想显示新的更改以及当前值,如:empid、dept、old salary、revised salary,请使用
CASE。@otadm确定,请查看更新的答案。请将其标记为已回答,这也会帮助其他人。