2017-06-19 72 views
0

我有一個薪金專欄,我想給所有經理提20%的提高,並且提高30%給所有副總裁。我不知道我怎麼能加入表本身,然後做出不同的計算,因爲select語句將保持不變與增加20%爲同一列執行不同的計算

SELECT 'Emp# ' || EMPLOYEE_ID || ' named ' || FIRST_NAME || ' ' ||LAST_NAME || ' who is ' || JOB_ID || ' will have a new salary of $' || (SALARY +(SALARY*0.2)) AS "Employee with increased pay" 
FROM EMPLOYEES 
WHERE JOB_ID LIKE '___MAN%' OR (JOB_ID LIKE '___VP%') AND (SALARY < 6000 OR 
SALARY > 11000) 
ORDER BY (SALARY - (SALARY*0.2)) DESC 
+0

你想做一個'select'或'update'嗎?還要標記您正在使用的數據庫。 –

+0

我正在使用oracle,並且我想選擇 – Workkkkk

+0

,您可以執行case語句或工會 – Jayvee

回答

1

可以使用CASE子句。

CASE表達式使您可以在SQL語句中使用IF ... THEN ... ELSE邏輯,而無需調用過程。 (見Documentation

您的查詢應該是這樣的一個:

SELECT 'Emp# ' 
    || EMPLOYEE_ID 
    || ' named ' 
    || FIRST_NAME 
    || ' ' 
    ||LAST_NAME 
    || ' who is ' 
    || JOB_ID 
    || ' will have a new salary of $' 
    || 
    CASE JOB_ID 
    WHEN 'Manager' 
    THEN (SALARY +(SALARY*0.2)) 
    WHEN 'VP' 
    THEN (SALARY +(SALARY*0.3)) 
    END AS "Employee with increased pay" 
FROM EMPLOYEES 
WHERE JOB_ID LIKE '___MAN%' 
OR (JOB_ID LIKE '___VP%') 
AND (SALARY < 6000 
OR SALARY > 11000) 
ORDER BY (SALARY - (SALARY*0.2)) DESC 

CASE我使用的列JOB_ID的價值假設「經理」和「副總裁」是你的表的實際值。

希望它適合你。

+0

認識它是的,謝謝。完美作品 – Workkkkk

+0

@Workkkkk。 。 。如果這回答你的問題,那麼你應該接受答案。 –