Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Вопрос по merge  [new]
ИльдарSR
Member

Откуда:
Сообщений: 466
Добрый день.

Есть большая бд, хочу сделать архивацию больших таблиц.
Можно ли сделтаь через Merge следующую конструкцию

MERGE INTO ArchiveOrd ---- Добавляем данные в архивную таблицу
USING (
SELECT Id,CreateDate
FROM Ordes WHERE DATEDIFF(MONTH,CreateDate,GETDATE()) >= 30 ) O
ON (OA.Id = O.Id)
WHEN NOT MATCHED BY TARGET THEN
INSERT (Id,CreateDate)
VALUES (O.Id,O.CreateDate)
WHEN NOT MATCHED BY SOURCE THEN
DELETE FROM Ordes ---- боевая таблица.

Но у меня ругается на полседнюю строку
DELETE FROM Ordes ---- боевая таблица.
Замысел у меня по крайней мере был следующий, заполняем архивную таблицу по условию
FROM Orders WHERE DATEDIFF(MONTH,CreateDate,GETDATE()) >= 30 ) O
и удаляем записи из боевой, но не могу понять где у меня ошибка.((

Подскажите, пожалуйста.

Заранее спасибо за Ваши ответы.
12 ноя 13, 15:23    [15115894]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по merge  [new]
merge не нужее
Guest
ИльдарSR
Добрый день.
Можно ли сделтаь через Merge следующую конструкцию

1. нет
2. вы хоть понимаете, что пытаетесь написать?

WHEN NOT MATCHED BY SOURCE - нет в источнике, в вашем случае это
SELECT Id,CreateDate
FROM Ordes WHERE DATEDIFF(MONTH,CreateDate,GETDATE()) >= 30

THEN
DELETE FROM Ordes
удалить из источника


т.е., переведя на русский, если записей нет в источнике - удалить их из источника

инструкция мердж меняет одну таблицу - target.

если вам нужно удалить данные из одной таблицы и тут же их вставить в другую, используйте delete + ouput into
12 ноя 13, 15:34    [15115971]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по merge  [new]
Glory
Member

Откуда:
Сообщений: 104751
ИльдарSR
но не могу понять где у меня ошибка.((

Ошибка по прежнему в нежелании читать хелп
А там ясно написано, что для DELETE в MERGE ничего не указывается. Потому что DELETE выполняется для таблицы, уже указанной в MERGE
12 ноя 13, 15:37    [15115997]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по merge  [new]
ИльдарSR
Member

Откуда:
Сообщений: 466
Понял, спасибо большое.

Сделал через delete + ouput into
12 ноя 13, 15:50    [15116118]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить