Слияние при нескольких условиях

#sql #sql-server #upsert #sql-merge

#sql #sql-сервер #upsert #sql-слияние

Вопрос:

Можно ли использовать несколько условий при слиянии SQL при условии создания уникального идентификатора вместо объединения?

Идентификатор компании местоположение магазина = уникальный идентификатор. Я не хочу создавать дополнительный объединенный столбец. Будет ли это работать? Если нет, то что может быть лучшим решением?

ON (target.CompanyId = source.CompanyId AND target.Storelocation = source.storelocation)

 CompanyId   StoreLocation   StoreSQM
------------------------------------
12345       Chicago01        1650
12345       Chicago02        1985
12652       Milwaukee        1865
45846       Minneapolis     45845
 
 MERGE dbo.storestbl AS target
USING stagingtbl AS source 
      **ON (target.CompanyId = source.CompanyId AND target.Storelocation = source.storelocation)**

WHEN MATCHED THEN
   Do something

WHEN NOT MATCHED THEN
   Do something

 

Комментарии:

1. ДА. Но ваша скобка неверна. Должно быть просто ON target.CompanyId = source.CompanyId AND target.Storelocation = source.storelocation

2. @Squirrel В скобках нет ничего неправильного или незаконного. В документации есть несколько примеров такого использования.

3. мой плохой. Думал, я видел, что это было не в том месте.

4. @Squirrel, так что добавление и будет действовать как объединение и преобразовывать его в уникальный идентификатор, верно?

5. AND означает, что оба условия должны быть истинными.