Если я правильно понял, меня довольно легко достичь с помощью макроса Excel.
Сначала выведите данные вашей БД на отдельную таблицу вашего документа Excel. Убедитесь, что оба листа (исходный лист с данными и новый с данными БД) отсортированы, иначе сортируйте их с помощью макроса.
Затем перейдите вниз по списку и добавьте оценку в столбец «SerialNo» исходного листа при совпадении строки.
По окончании не забудьте удалить лист с данными в БД. Это должно быть лучше, чем вызывать базу данных в 50 000 раз, я обычно стараюсь минимизировать количество вызовов базы данных, потому что они медленные.
РЕДАКТИРОВАТЬ: так как у вас есть много записей в таблице для вывода в SQL Worksheet, я бы посоветовал вам импортировать все данные Excel во временную таблицу SQL, сделать легкий выбор, соединив временную таблицу с другой и экспортировать результат в файл Excel!
select t1.SKU SKU, concat(t1.SerialNo, " ", t1.grade) SerialGrade from yourTable t1
join tempTable t2 on t2.SerialNo = t1.SerialNo
orderby t1.SerialNo ASC