При использовании SELECT CONCAT(SOURCE.OrderNo, '_', SOURCE.OrderLine), MAX(SOURCE.LastDate) GROUP BY CONCAT(SOURCE.OrderNo, '_', SOURCE.OrderLine)
и SELECT CONCAT(TARGET.OrderNo, '_', TARGET.OrderLine), MAX(TARGET.LastDate) GROUP BY CONCAT(TARGET.OrderNo, '_', TARGET.OrderLine)
в
MERGE dbo.TargetTbl AS TARGET
USING dbo.SourceTbl AS SOURCE
ON (TARGET.OrderNo = SOURCE.OrderNo)
WHEN MATCHED AND EXISTS (SELECT CONCAT(SOURCE.OrderNo, '_', SOURCE.OrderLine)
,MAX(SOURCE.LastDate)
GROUP BY CONCAT(SOURCE.OrderNo, '_', SOURCE.OrderLine)
INTERSECT SELECT CONCAT(TARGET.OrderNo, '_', TARGET.OrderLine)
,MAX(TARGET.LastDate)
GROUP BY CONCAT(TARGET.OrderNo, '_', TARGET.OrderLine)
)
THEN UPDATE SET TARGET.IsBlocked = 1;
Я получаю эту ошибку:
Каждое выражение GROUP BY должно содержать хотя бы один столбец, который не является
внешняя ссылка.
Я искал и нашел несколько решений, но ни одно из них не применимо к моему запросу, или, по крайней мере, я не знаю, как это сделать. Любая помощь будет принята с благодарностью.
РЕДАКТИРОВАТЬ: Я определенно могу иметь две одинаковые строки в таблицах SOURCE & TARGET, и это выдает мне эту ошибку:
Оператор MERGE попытался ОБНОВИТЬ или УДАЛИТЬ ту же строку больше
чем один раз. Это происходит, когда целевая строка соответствует более чем одному источнику
строка. Оператор MERGE не может ОБНОВИТЬ / УДАЛИТЬ одну и ту же строку цели
стол несколько раз. Уточните предложение ON, чтобы обеспечить целевую строку
соответствует не более одной исходной строки или используйте предложение GROUP BY для группировки
исходные строки.
При добавлении GROUP BY это дает мне указанную выше внешнюю ошибку ссылки.