#sql #sql-update #sql-insert
#sql #sql-обновление #sql-вставка
Вопрос:
Я пытаюсь написать скрипт для вставки данных из Table1 в Table2, только если Employee находится в Table1, а не в Table2, или если информация о сотруднике изменяется с Table1 на Table2, добавляя changedate.
- Таблица1: номер сотрудника, имя, дата найма, срок действия
- Таблица2: номер сотрудника, имя, дата найма, срок действия, дата изменения (дата обновления базы данных) getdate()
Пример данных:
Table1:
EmployeeNumber - Name - HireDate - TermDate
-------------------------------------------
1234 - Ted - 8-12-1980 - NULL
9632 - Josh - 1-1-2019 - 3-29-2019
5678 - Jeff - 3-29-2019 - NULL
Таблица2:
EmployeeNumber - Name - HireDate - TermDate - ChangeDate
---------------------------------------------------------
1234 - Ted - 8-12-1980 -NULL - 8-12-1980
9632 - Josh - 1-1-2019 - NULL - 1-1-2019
Я пробовал несколько запросов Insert и Update, но безуспешно.
Этот запрос работает для вставки записи, которая не существует.
INSERT INTO Table2 ([EmployeeNumber], [Name], [HireDate], [Termdate], [ChangeDate])
SELECT
*, GETDATE() AS 'ChangeDate'
FROM
Table1
WHERE
NOT EXISTS (SELECT [EmployeeNumber]
FROM Table2
WHERE Table1.[EmployeeNumber] = Table2.[EmployeeNumber])
После выполнения запроса Table2 должна выглядеть следующим образом:
Таблица2:
EmployeeNumber - Name - HireDate - TermDate - ChangeDate
---------------------------------------------------------
1234 - Ted - 8-12-1980 - NULL - 8-12-1980
9632 - Josh - 1-1-2019 - NULL - 1-1-2019
9632 - Josh - 1-1-2019 - 3-26-2019 - 3-29-2019
5678 - Jeff - 3-29-2019 - NULL - 3-29-2019
Ответ №1:
Я не уверен, о чем вы спрашиваете, но я думаю, что метод, который вы ищете, — это ВНУТРЕННЕЕ ОБЪЕДИНЕНИЕ
Удачи!