Я думаю, вам нужна логика JOIN
:
Select a.OPID, b.Name, b.Dept
from table1 a left join
table3 c
on a.OPID = c.OPID and a.OPID like 'D%' left join
table2 b
on (b.ID = c.OPID and a.OPID like 'D%') or
(b.ID = a.OPID and a.OPID not like 'D%');
Возможно, вы упростили проблему.Но логика a.OPID = c.OPID and c.OPID = b.ID
такая же, как и a.OPID = b.ID
, поэтому ваша логика по-прежнему:
Select a.OPID, b.Name, b.Dept
from table1 a join
table2 b
on b.ID = a.OPID;
Возможно, вы упростили задачу, но если нет, то это может быть простейшим решением.