Хммм. , , Вы, кажется, хотите, чтобы четыре значения были разными или NULL
. Другой метод использует apply
:
select t.*
from mytable t cross apply
(select count(*)
from (values (t.afo), (t.fo), (t.co), (t.aco)
) v(val)
where val is not null
having count(*) = count(distinct val)
) x;
При этом удаляются значения NULL
, а затем проверяется, все ли остальные различны.