Предлагаем попробовать внешние соединения:
SELECT o1.ownerid, o2.ownerid, o3.ownerid, o4.ownserid
...
FROM widgets w
LEFT JOIN o AS o1 ON w.SellerManagerID = o.OwnerID
LEFT JOIN o AS o2 ON w.SellerID = o.OwnerID
LEFT JOIN o AS o3 ON w.BuyerManagerID = o.OwnerID
LEFT JOIN o AS o4 ON w.BuyerID = o.OwnerID
Если полезно, (не зная вашего требования), вы можете использовать
COALESCE(o1.OwnerID, o2.OwnerID, o3.ownerID, o4.ownerID)
или
CASE WHEN o1.ownerID IS NULL THEN ...
По моему опыту, внешние объединения почти всегда так же эффективны, как и любой другой вариант, особенно по сравнению с коррелированными подзапросами.
Я также беспокоюсь, когда вы упоминаете «временную таблицу».