Массовое обновление ссылочных номеров, возвращение 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 одинаковый тип данных? Проблема может быть в том, что столбец, к которому вы присоединяетесь, не соответствует друг другу.