К сожалению, вы не можете использовать псевдоним ("as NEW_DVAL") в предложении where. Вы можете сделать это:
select NEW_DVAL from (
select CONVERT(INT, 1 + 999999999 * rand()) as NEW_DVAL
) a
WHERE NEW_DVAL NOT IN (SELECT FIELD_DVAL FROM dbo.MASTER_REF)
Однако я подозреваю, что ваш запрос все равно не будет выполнять то, что вы хотите. Бит «select convert (...)» даст вам ОДНУ строку, которую бит «где» либо отфильтрует, либо нет.
Если случайно выбранный новый dval уже существует, запрос не вернет ни одной строки - он не будет автоматически зацикливаться, пока не найдет неиспользованную.
Взгляните на K Ответ Иванова для решения этой проблемы.