Oi Marcio,
O rownum é assinado em tempo de execução, então se não existe rownum = [1,2,…,n] não existe rownum = (n+1), então não tem um meio de você retornar diretamente registros com rownum > 1, e sim de 1 até m.
O que você pode fazer é o seguinte:
SELECT *
FROM
(SELECT tab.*, ROWNUM num
FROM
(SELECT *
FROM SA1010
WHERE A1_VEND = '42' AND A1_FILIAL = ' ' AND d_e_l_e_t_ = ' '
ORDER BY R_E_C_N_O_ ASC ) tab
)
WHERE num >= 50000
Isso deve resolver seu problema…
[i]EDIT:
Lembrando ainda que não significa que o seu primeiro select irá trazer os primeiros 50 mil registros de menor R_E_C_N_O_, pois, que eu saiba, a condição ROWNUM <= 50000 vai ser executada antes do ORDER BY. Ou seja, o Oracle irá retornar os primeiros 50 mil registros que encontrar pra depois ordená-los. Para que ele ordeve primeiro e depois retire os 50 mil primeiros você deve fazer o seguinte:[/i]
SELECT tab.*
FROM
(SELECT *
FROM SA1010
WHERE A1_VEND = '42' AND A1_FILIAL = ' ' AND d_e_l_e_t_ = ' '
ORDER BY R_E_C_N_O_ ASC ) tab
WHERE ROWNUM <= 50000