У меня есть таблица сотрудников с более чем 50 тысячами записей. У нас всего 24 тысячи сотрудников, но некоторые из сотрудников, которых здесь больше нет, связаны с историческими проектами, поэтому я не хочу их удалять. И, конечно же, мы наняли больше сотрудников, которые работают над НОВЫМИ проектами, поэтому их нужно добавить в таблицу сотрудников.
Мне удалось убедить HR предоставить мне файл CSV с данными сотрудников, которые мы сохраните в нашей таблице, и теперь мне нужен способ обновить существующие записи (новые номера телефонов, отделы и т. д. c ...) и добавить новые.
Есть 3 критерия:
- если запись существует в CSV и таблице «сотрудников», ОБНОВИТЬ данные;
- если запись существует в CSV, а НЕ в таблице «сотрудники», ВСТАВИТЬ данные;
- если запись существует в таблице «сотрудники», а НЕ в CSV, установите для записи значение «неактивно».
Это будет обычный (ежемесячный) процесс, поэтому хранимая процедура или Функция будет выполнима.
Предложения, пожалуйста ...
ОБНОВЛЕНИЕ: идея MERGE работает, но решает только 2/3 проблемы (она не соответствует критерию № 3, потому что я не хочу удалить запись, если сотрудник больше не работает Компания). При добавлении второго оператора UPDATE после NOT MATCHED BY SOURCE возвращается ошибка, указывающая, что я не могу обновить одну и ту же запись дважды.
Есть какие-нибудь предложения по поводу этой последней части головоломки?