2015-11-01 185 views
-2

在採訪中,我被問到一個關於sql查詢的問題。 查詢是員工表數據庫相關查詢

ID  Name  Salary 
1  emp 1 10000 
2  emp 2 20000 
3  emp 3 30000 
4  emp 4 40000 
... 

我必須更新員工的工資作爲說,如果低於10000增量由500 如果是間爲10000〜20000更新通過600 如果是30000更新20000之間由700 並持續到表中的最後一個記錄。 表中有數十萬行。

如何爲此創建腳本?

+0

請格式化您的數據。 – qxg

+1

順便說一句,在哪些dbms中,你被要求寫這個查詢? – pedram

+0

在SQL Server查詢問題被問到。 – Kanchan

回答

2

嘗試這樣

UPDATE employee 
SET Salary= 
CASE WHEN Salary < 10000 THEN Salary + 500 
CASE WHEN Salary >= 10000 and Salary < 20000 then Salary+600 
CASE WHEN Salary >= 20000 and Salary < 30000 then Salary+700 
ELSE Salary END 
+0

其中dbms你是否在上面查詢? – pedram

+0

謝謝你的回覆。但在員工表薪水可能通過改變這種情況下,我需要在查詢中添加多少個case語句。 – Kanchan

1

您的描述並沒有說要做什麼,如果工資超過30000我假設工資是由800在這種情況下更新。有了這個假設,你可以這樣做:

SELECT *, (
    (Salary<10000)?(Salary+500):(
    (Salary>=10000 AND Salary < 20000)? (Salary + 600):(
    (Salary>=20000 AND Salary < 30000)? (Salary + 700): 
    (Salary + 800)) 
))) AS NewSalary FROM employee; 

希望這會給你一個想法。