Задать вопрос
@dlysenko1311

Как сделать MERGE двух таблиц?

Есть две таблицы: Orders и Orders_incr
Orders_incr содержит в себе новый кусок данных, который нужно вставить в таблицу Orders, но иногда в Orders_incr попадаются строки, которые уже есть в таблице Orders, соответственно, эти строки (дубли) вставлять в таблицу Orders не нужно.


MERGE
MERGE [dbo].[Orders] as trg 
USING (select distinct * from [dbo].[Orders_incr]) as src 

ON 
 
  trg.[OrderLinePriceOfLine] =cast(src.[OrderLinePriceOfLine]  as money) AND
  trg.[OrderCustomFieldsIsOnlineOrder] =cast(src.[OrderCustomFieldsIsOnlineOrder] as varchar) AND
  trg.[OrderIdsExternalSystemNomerChekaNaSajte] =cast(src.[OrderIdsExternalSystemNomerChekaNaSajte] as varchar) 


WHEN NOT MATCHED BY TARGET  
THEN INSERT (
 
	[OrderLinePriceOfLine] ,
	[OrderCustomFieldsIsOnlineOrder] ,
	[OrderIdsExternalSystemNomerChekaNaSajte] 
	) 
VALUES ( 

 cast(src.[OrderLinePriceOfLine]  as money) , 
 cast(src.[OrderCustomFieldsIsOnlineOrder] as varchar) ,
 cast(src.[OrderIdsExternalSystemNomerChekaNaSajte] as varchar) 
  ) 
;


Ошибки полей:
cast(src.[OrderLineQuantity] as money) ,  cast(src.[OrderLinePriceOfLine]  as money)

Как вставить данный их таблицы Orders_incr в Orders, гарантированно без дублей?
  • Вопрос задан
  • 115 просмотров
Подписаться 1 Простой 4 комментария
Решения вопроса 1
tsklab
@tsklab Куратор тега SQL Server
Здесь отвечаю на вопросы.
Гадание на хрустальном шаре:
[OrderLineQuantity] [varchar](255), [OrderLinePriceOfLine] [varchar](255)
не в нужном формате для типы money и smallmoney.
Это может быть из-за различий локализации, например, сервера и клиента.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы