Здравствуйте и добрый день всем. Не могли бы вы помочь мне исправить эту последовательность SQL?SQL - агрегат может не отображаться в установленном списке инструкции UPDATE
MERGE INTO table2 WITH (HOLDLOCK) AS target
USING
(
SELECT column1,
AccessDate,
AccessCount,
column4,
column5,
column6,
column7,
column8
FROM table1
GROUP BY column1, column4, column5, column6, column7, column8
) AS source
ON target.column1 = source.column1 AND
target.column5 = source.column5 AND
target.column6 = source.column6 AND
target.column7 = source.column7 AND
target.column8 = source.column8
WHEN MATCHED THEN
UPDATE SET target.LastAccessDate = MAX(source.AccessDate),
target.LastWeeklyAccessCount = (SELECT SUM(source.AccessCount))
WHEN NOT MATCHED BY TARGET THEN
INSERT (column1, LastAccessDate, LastWeeklyAccessCount, column4, column5, column6, column7, column8)
VALUES (source.column1, source.AccessDate, source.AccessCount, source.column4, source.column5, source.column6, source.column7, source.column8);
Я получаю «агрегат может не отображаться в списке множества оператора UPDATE» ошибку, когда я пытаюсь запустить его из-за этих двух линий:
target.LastAccessDate = MAX(source.AccessDate),
target.LastWeeklyAccessCount = (SELECT SUM(source.AccessCount))
Мой код должен обновить в целевом размере AccessDate
максимальное количество AccessDates из группы, а LastWeeklyAccessCount
- сумма счетчиков в группе.
Если подходящие записи не найдены, просто вставьте. Я работал с SQL, как 2 года назад, но не могу много помнить, чтобы любая помощь была оценена.
Работал как шарм. Спасибо! –
Другая проблема возникла после того, как я обновил заявление. 'Невозможно вставить повторяющуюся строку ключа в объект 'dbo.table2''. Из-за оператора 'INSERT'' КОГДА НИКАКОГО НЕ СООТВЕТСТВУЕТ' –