Когда строки в коррелированном подзапросе совпадают с несколькими строками во внешнем запросе, тогда довольно сложно написать это без корреляции. Пример:
select a.*,
(select count(distinct b.x)
from b
where b.y = a.y or b.z = a.z
)
from a;
Вероятно, есть способ записать это без предложения корреляции, но это будет непросто.
Возможно, более простой пример - просто получить "следующий "b после a:
select a.*,
(select min(b.date)
from b
where b.date > a.date
)
from a;
Есть способы написать это, но это будет намного сложнее, а наивные методы - дороже.