2012-10-03 72 views
0

我有2個表:合併沒有返回正確的數據

CREATE TABLE employee (
employee_id NUMBER(5), 
first_name VARCHAR2(20), 
last_name VARCHAR2(20), 
dept_no  NUMBER(2), 
salary  NUMBER(10)); 

表員工都有值:

(1, 'Dan', 'Morgan', 10, 100000); 
(2, 'Helen', 'Lofstrom', 20, 100000); 
(3, 'Akiko', 'Toyota', 20, 50000); 
(4, 'Jackie', 'Stough', 20, 40000); 
(5, 'Richard', 'Foote', 20, 70000); 
(6, 'Joe', 'Johnson', 20, 30000); 
(7, 'Clark', 'Urling', 20, 90000); 

CREATE TABLE bonuses (
employee_id NUMBER, bonus NUMBER DEFAULT 100); 

表獎金有值:

(1,100); 
(2,100); 
(4,100); 
(6,100); 
(7,100); 

而且我也基於合併在獎金錶上:

MERGE INTO bonuses b 
USING (
    SELECT employee_id, salary, dept_no 
    FROM employee 
    WHERE dept_no =20) e 
ON (b.employee_id = e.employee_id) 
WHEN MATCHED THEN 
    UPDATE SET b.bonus = e.salary * 0.1 
    DELETE WHERE (e.salary < 40000) 
WHEN NOT MATCHED THEN 
    INSERT (b.employee_id, b.bonus) 
    VALUES (e.employee_id, e.salary * 0.05) 
    WHERE (e.salary > 40000); 

而我當我 選擇*獎金;

EMPLOYEE_ID BONUS 
------------------ 
1   100 
2   10000 
3   2500 
4   4000 
5   3500 
7   9000 

我的問題是「我的獎金記錄在哪裏employee_id#6」?

回答

0

刪除DELETE WHERE (e.salary < 40000)聲明? 而你應該讓你的其中一個條件包括平等。 畢竟有人的薪水可能就像傑姬一樣只有40K。

+0

謝謝!我必須包括那個錯誤的刪除代碼。 –