【问题标题】:oracle SQL increase fields valueoracle SQL 增加字段值
【发布时间】:2016-01-31 15:54:55
【问题描述】:

您好,我在 SQL oracle 中有一个简单的问题。如果它在 IT 部门下,我需要将员工的薪水提高 7%12% 属于业务部门, 并且 5% 用于其他部门 最后显示 修改后的工资保留两位小数 这是我的员工表如下:

employeeID      Dept       Salary
emp1             IT         2000
emp2             BS         3000  
emp3             MK         4000
emp4             EG         5000

注意:BS = 业务部门,MK = 营销部门,EG = 工程部门

【问题讨论】:

  • here一样使用CASE WHEN

标签: sql oracle oracle11g


【解决方案1】:

您可以在 UPDATE 语句中使用 CASE 表达式。它比 DECODE 详细且易于解释。

例如,

要显示:

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;

【讨论】:

  • 谢谢,但我不想更新,我想显示新更改以及当前值,例如:empid、dept、旧薪水、修订薪水。
  • @OTAMD 好的,请参阅更新后的答案。请将其标记为已回答,也会对其他人有所帮助。
【解决方案2】:

使用解码功能:

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

【讨论】:

    猜你喜欢
    • 2015-11-03
    • 1970-01-01
    • 2015-07-06
    • 2018-02-01
    • 1970-01-01
    • 2013-05-09
    • 1970-01-01
    • 2020-07-26
    • 1970-01-01
    相关资源
    最近更新 更多