2015-10-31 87 views
0

你好我在SQL oracle中有一個簡單的問題。這是我需要的,如果由增加7%employee'a薪水其下的IT部門,在營業部 12%, 和其他部門5% 最後顯示 修改後的薪金保留兩位小數 繼承人我的員工表如下:oracle SQL增加字段值

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

注:BS =業務部門,MK = markiting部門,EG =工程部

+1

使用'CASE WHEN'像[這裏](http://stackoverflow.com/questions/18760632/update-multiple-rows-using-case-when-oracle) –

回答

1

您可以使用CASE表達式在您的UPDATE聲明中。這是比詳細和易於解釋比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; 
+0

謝謝,但我不想更新,我想顯示新的變化以及當前值:empid,dept,舊工資,修改後的工資。 –

+0

@OTAMD好的,請參閱最新的答案。請標記爲已回答,也會幫助其他人。 –

1

使用解碼功能:

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