Я подозреваю, что вам не хватает значения order by
при использовании rownum
.Размещенные вами два запроса функционально эквивалентны.Однако следующие два запроса не являются:
select count(distinct BCC || '~' || BN) BCCN
from LINK_TBL
where AN = 'abcdefg'
and BR = 1
and rownum <= 5
order by BCC || '~' || BN;
select count(distinct BCCN)
from (
select BCC||'~'|| BN BCCN
from LINK_TBL
where AN = 'abcdefg' and BR = '1'
order by BCC || '~' || BN
)
where rownum <= 5;
Разница в том, что первый запрос получает все строки в указанном порядке, затем занимает первые 5 строк, а второй запрос получает 5 строксортирует только те 5.