Пример объединения строк

Вставьте или обновите строки в таблице COPY_EMP3 в соответствии с таблицей EMPLOYEES.

Пример объединения строк
    MERGE INTO copy_emp3 c
USING (SELECT * FROM EMPLOYEES ) e
ON (c.employee_id = e.employee_id)
WHEN MATCHED THEN
UPDATE SET
c.first_name = e.first_name,
c.last_name = e.last_name,
c.email = e.email,
c.phone_number = e.phone_number,
c.hire_date = e.hire_date,
c.job_id = e.job_id,
c.salary = e.salary*2,
c.commission_pct = e.commission_pct,
c.manager_id = e.manager_id,
c.department_id = e.department_id
DELETE WHERE (E.COMMISSION_PCT IS NOT NULL)
WHEN NOT MATCHED THEN
INSERT VALUES(e.employee_id, e.first_name, e.last_name,
e.email, e.phone_number, e.hire_date, e.job_id,
e.salary, e.commission_pct, e.manager_id,
e.department_id);

Таблица COPY_EMP3 создается с помощью следующего кода:

    CREATE TABLE COPY_EMP3 AS SELECT * FROM EMPLOYEES
WHERE SALARY<10000;

Затем выполните запрос таблицы COPY_EMP3.

    SELECT employee_id, salary, commission_pct FROM COPY_EMP3;

Обратите внимание, что имеется тринадцать сотрудников с окладом меньше 10000 (SALARY < 10000) и два сотрудника с комиссионными (COMMISSION_PCT).

В примере на рисунке сопоставляется значение EMPLOYEE_ID в таблице COPY_EMP3 со значением EMPLOYEE_ID в таблице EMPLOYEES. Если совпадение обнаружено, строка в таблице COPY_EMP3 обновляется в соответствии с таблицей EMPLOYEES, и оклад сотрудника удваивается. Записи двух сотрудников со значениями в столбце COMMISSION_PCT удаляются. Если совпадение не обнаружено, тогда строки вставляются в таблицу COPY_EMP3.

Пример объединения строк

В примерах на рисунке показано, что таблица COPY_EMP3 пуста. Проверяется выполнение условия c.employee_id = e.employee_id. Проверка условия возвращает значение False (ложь) – совпадения отсутствуют. В алгоритме выполняется переход к предложению WHEN NOT MATCHED, и посредством команды MERGE строки таблицы EMPLOYEES вставляются в таблицу COPY_EMP3. Это означает, что теперь таблица COPY_EMP3 содержит точно такие же данные, как и таблица EMPLOYEES.

    SELECT employee_id, salary, commission_pct from copy_emp3;

Далее: Летнее время

Статьи по теме
Комментарии
Написать

(обязательно)

(обязательно)

Это не спам (обязательно)