Забудьте, что вы когда-либо узнали о nolock - не используйте его, пока не поймете, что он делает и что может случиться.Безопасно ли здесь использовать?Возможно - но Кто знает.Часто это включается, потому что кто-то сказал что-то про «быстрее».Если вы включите его, вы должны знать, что он может делать и какие ошибки (да) он может генерировать, и быть готовым реагировать, когда возникают ошибки или кто-то оспаривает ваши результаты.
Далее, DISTINCT здесь не делает ничего полезного.Почему вы включаете это?И, наконец, мы не упорядочиваем по порядковым номерам - эту вредную привычку вы не должны поощрять.
Что касается вашего вопроса, просто поместите ваш текущий запрос в cte и затем присоединитесь к этому cte по мере необходимости.Примерно:
with cte as (select ... from dbo.RQueue ...) --no order by clause here
select <columns you need>
from cte inner (left?) join <database>.<schema>.<table> as NameLookup
on cte.CustomKey = NameLookup.CustomKey
order by cte.Failed desc, cte.FailedPercent desc;
Опять же - это "примерно" то, что вы хотите, так как это предполагает некоторые догадки.Обратите внимание, что я добавил несколько лучших практик.