У меня есть оператор слияния, который выглядит следующим образом:
...
WHEN NOT MATCHED BY TARGET then Insert
(ID,
Status,
Read,
User,
ChangeDate)
VALUES
(Source.ID,
Source.Status,
Source.Read,
Source.User,
Source.ChangeDate)
...
В настоящее время я использую ID, Status и ChangeDate для сопоставления источника и цели. Иногда ChangeDate может измениться без каких-либо фактических изменений в строке. Мне нужно, чтобы мой оператор слияния выполнялся и вставлял новую строку, только если Source.Status не совпадает с последним Target.Status, основанным на ChangedDate.
Моя текущая целевая таблица выглядит следующим образом
ID Status Read User ChangeDate
33 Read Yes 76 01-Jun-2019
33 Closed Yes 76 12-Jun-2019
33 Read Yes 76 23-Jun-2019
Мой оператор слияния хочет вставить следующую строку в эту таблицу
ID Status Read User ChangeDate
33 Read Yes 76 24-Jun-2019
Я не хочу этогослучиться потому, что, хотя ChangeDate был изменен, статус такой же, как и в предыдущей строке (23 июня 2019 г.)
Если мое объединение снова запустилось и попытался вставить строку ниже
ID Status Read User ChangeDate
33 Closed Yes 76 30-Jun-2019
Тогда будет вставлена новая строка, так как статус «Закрыт» не совпадает с предыдущим статусом «Чтение».
Ценю любую помощь в этом, я не могу придумать способ обойти это в настоящее время.
Спасибо, Джессика
Пытался объединить несколько разных столбцов