У меня есть таблица, которая является словарем слов, который вы можете найти в названии компании, и их синонимах. Я хочу использовать это для стандартизации имен в другой таблице. Например, «WIDGET COMPANY INCORPORATED» будет стандартизоваться «WIDGET CO INC». Я думал, что это будет так же просто, как и нижеперечисленное перекрестное соединение, но, похоже, оно работает только для первого синонима в списке, а не для всего списка. Неужели я ошибаюсь? Я собирался попытаться сделать это в SSIS вместо этого, если я не могу понять это, но я думаю, что это будет чрезмерно усложнять то, что должно быть относительно простой задачей ... конечно, я понимаю, поскольку это перекрестное соединение , мы говорим о большом количестве рядов - 50 миллионов, чтобы быть точным ...Обновление запроса с использованием перекрестного соединения
update [dbo].[Company addresses]
set [Name 1 syn] = replace(a.[Name 1 syn], ' ' + b.[Synonym] + ' ', ' ' + b.[Base] + ' ')
from [dbo].[Company addresses] a
cross join dbo.Synonyms b
Да. «UPDATE» работает только один раз на целевую строку, даже если на другой стороне соединения есть много. У плана, вероятно, есть агрегат «ЛЮБОЙ», чтобы выбрать один из многих возможных. –
Я не понимаю, что вы хотите сделать. Не могли бы вы предоставить некоторую структуру таблицы, образцы данных и примеры результатов. – HLGEM
@HLGEM - Если '[Адрес компании] .Name'' 'улица, Лондон', и у них есть две строки синонима' street -> road' и 'London -> Big City'. Я думаю, что намерение запускать каждую замену в свою очередь, все синонимы, поэтому окончательный результат = '1 дорога, Большой город' –