2017-10-20 129 views
1

我想編寫一個SQL語句,根據他們的job_id,通過員工編號,姓名,job_id和修改的工資返回僱員列表。如果僱員是副總裁,則SELECT語句應該返回一個增加20%的薪水,但是如果他們是MAN,則應該返回一個薪水增加30%的薪水。是否有可能在沒有工會的情況下返還兩種不同的修改薪水?這是迄今爲止我所擁有的。SQL修改返回的選擇值沒有工會

SELECT 'Employee ', EMPLOYEE_ID, 
'named ', FIRST_NAME || ' ' || LAST_NAME AS "Full Name", 
'with Job ID of ', JOB_ID, 
'will have a new salary of ', SALARY 
FROM EMPLOYEES 
WHERE ROUND(SALARY*1.2,2) IN (SELECT ROUND(SALARY*1.2,2) 
FROM EMPLOYEES 
WHERE JOB_ID LIKE '%VP') 
OR ROUND(SALARY*1.3,2) IN (SELECT ROUND(SALARY*1.3,2) 
FROM EMPLOYEES 
WHERE JOB_ID LIKE '%MAN'); 
+0

我想你的意思'LIKE「VP%'是不是意味着開始與VP和別的東西,現在意味着以「VP」結尾或以「MAN」結尾。 –

+1

@Juan Carlos Oropeza:也許這就是結構。所以它可以是任何'人',例如'SUPERMAN'或'WOMAN';-) –

+0

@ThorstenKettner這只是證明我的觀點;) –

回答

1

你可以使用一個case表達:

SELECT 'Employee ', EMPLOYEE_ID, 
     'named ', FIRST_NAME || ' ' || LAST_NAME AS "Full Name", 
     'with Job ID of ', JOB_ID, 
     'will have a new salary of ', 
     salary * CASE WHEN job_id LIKE '%VP' THEN 1.2 
        WHEN job_id LIKE '%MAN' THEN 1.3 
        ELSE 1 
       END 
FROM EMPLOYEES 
1

這是更簡單:

SELECT 
    'Employee ', 
    employee_id, 
    'named ', 
    first_name || ' ' || last_name AS "Full Name", 
    'with Job ID of ', 
    job_id, 
    'will have a new salary of ', 
    CASE 
    WHEN job_id LIKE '%VP' THEN salary * 1.2 
    WHEN job_id LIKE '%MAN' THEN salary * 1.3 
    ELSE salary 
    END AS modified_salary 
FROM employees;