Массовое обновление ссылочных номеров, возвращение 0 записей из кода

Я написал кусок SQL, который должен сопоставлять старые ссылочные номера с новыми и перезаписывать их.

В связи с этим мы получили более 3000 счетов от поставщика с неправильным номером ссылки. Они предоставили мне правильные в файле Excel.

Я создал новую таблицу в нашей БД и загрузил данные новых ссылок. Я тогда бегу ниже.

Сначала я запустил это в среде UAT с тестовыми данными, и код сделал именно то, что я хотел. Но когда я запускаю ниже, я получаю возврат 0.

Ниже приведен код, который я использую

UPDATE a
SET a.Refr1 = b.RefNEW
FROM ESB_EDI_HEADERS AS a
INNER JOIN Musgrave_EDI AS b ON a.Refr1 = b.RefOLD

Контекст:

ESB_EDI_HEADERS Таблица содержит все наши счета. Здесь мы получили неправильные ссылочные номера на счетах.

Musgrave_EDI это новая таблица, которую я сделал, куда я импортировал данные из файла Excel.

Я думаю, что может быть проблема с данными, которые я импортировал, потому что, когда я запускаю нижеприведенное, я не получаю ответы назад.

SELECT Refr1
FROM ESB_EDI_Headers
INTERSECT
SELECT RefOLD 
FROM Musgrave_EDI

Здесь я пытаюсь увидеть, где совпадают существующие ссылки, и все же здесь я тоже не получаю никаких результатов.

Я ценю любые рекомендации или помощь по этому вопросу, я чувствую, что это проблема с данными, хотя я не уверен, как я могу поделиться данными на этой платформе.

Ниже приведен пример данных из таблиц

Musgrave_EDI ВЫБРАТЬ ТОП 10 * ИЗ Musgrave_EDI

RefOLD      RefNEW
C2300008338 0
C2300008339 0
C2300008340 0
C2300027652 0
C2300027653 0
C2300027656 0
C2300005878 7439
C2300004652 8172
C2300004653 8752
C2300004654 9385

ESB_EDI_HEADERS SELECT TOP 10 Код сайта, поставщик, TrDate, Refr1, Refr2 ОТ ESB_EDI_HEaders WHERE DateImported >='2016-05-01 00:00:00.000'

Sitecode    Supplier    TrDate          Refr1       Refr2
5017    000011  2016-04-28 00:00:00.000 8228378422  E02591436
5057    000011  2016-04-28 00:00:00.000             E02591454
5012    000011  2016-04-25 00:00:00.000 78316997    E02591989
5012    000011  2016-04-27 00:00:00.000 78344448    E02591990
5012    000011  2016-04-29 00:00:00.000 78367685    E02591991
5011    000011  2016-04-25 00:00:00.000 78314138    E02591992
5011    000011  2016-04-28 00:00:00.000 78352647    E02591993
5011    000011  2016-04-30 00:00:00.000 78376810    E02591994
5013    000011  2016-04-25 00:00:00.000 78316973    E02592104
5013    000011  2016-04-27 00:00:00.000 78343940    E02592105

2 ответа

Так что все это отсортировано. Оказывается, данные, которые я получил от конечного пользователя, были неверными, поэтому на самом деле это был Refr2, который должен был быть в соединении.

После этого я начал получать записи обратно. Были некоторые дополнительные проблемы, но это было вызвано из-за пробелов, предоставленных продавцом.

Поэтому я решил эту проблему, используя код ниже

BEGIN TRAN
UPDATE ESB_EDI_HEADERS 
SET Refr2 = b.Refer2
FROM Musgrave_EDI AS b 
WHERE Refr2 =CONVERT(VARCHAR(30),b.Record)

Имеют ли a.Refr1 и b.RefOLD одинаковый тип данных? Проблема может быть в том, что столбец, к которому вы присоединяетесь, не соответствует друг другу.

Другие вопросы по тегам