При нескольких копиях один и тот-же артикул несколько раз присутствует в svpricecard.
Т.о. в подзапросах нужно гарантировать выборку оттуда одной строки.
В текущем виде ошибка будет как минимум тут:
Код:
(select p.BarCode
from supermag.SVPriceCard p
where p.Article=t.Article) BarCode
Этот подзапрос вообще лишний, barcode можно вытащить из основного подзапроса t.
И oldprice менять надо.