У меня есть таблица A с Key1 , datetime , когда я использую запрос слияния для вставки, я получаю повторяющиеся строки в источнике.
Какможем ли мы подать источник внутри запроса по дате и времени имеет максимум
MERGE tableA AS t
USING (VALUES
('datakeyA1', 'datetime value'),
('datakeyB1', 'datetime value'),
('datakeyA1', 'max datetime value')
) AS s (Key1, datetime)
ON s.Key1 = t.Key1
WHEN MATCHED THEN
UPDATE
SET Val = s.datetime
WHEN NOT MATCHED THEN
INSERT (Key1, datetime)
VALUES (s.Key1, s.datetime);
При выполнении вышеуказанного запроса я получаю:
Оператор MERGE попытался ОБНОВИТЬ или УДАЛИТЬ ту же строкуболее одного раза.
Можно ли запросить только эти строки (' datakeyB1 ', ' datetime value '), (' datakeyA1 ', ' max datetime value ') из всех значений без использования промежуточной таблицы?
Ожидаемые результаты только вставляют / обновляют значения datakeyB1 , datakeyA1 .Если дата одинакова в обоих данных, получится только одна строка.
MERGE tableA AS t
USING (VALUES
('datakeyB1', 'datetime value'),
('datakeyA1', 'max datetime value')
) AS s (Key1, datetime)
ON s.Key1 = t.Key1
WHEN MATCHED THEN
UPDATE
SET Val = s.datetime
WHEN NOT MATCHED THEN
INSERT (Key1, datetime)
VALUES (s.Key1, s.datetime);