1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| WITH TBPRNI AS -- Vos données
(
SELECT column_value as idprni
FROM TABLE(sys.odcinumberlist(3532, 3533, 3534, 3537, 3539, 3540, 3541, 3542, 3543))
)
, PARAM as -- Votre nombre de lignes à récupérer
(
select 7 as num from dual
)
, SR as -- Calcul de la plage d'id utilisés
(
select min(idprni) as idprni_min, max(idprni) as idprni_max
from TBPRNI
)
, TBPRNI_FULL AS -- Génération de la liste complète des id
(
select idprni_min + level - 1 as idprni
from SR
connect by level <= idprni_max - idprni_min + 1 + (select num from param)
)
, DELTA as -- Soustraction de la liste complète avec la liste actuelle
(
select idprni
from TBPRNI_FULL
minus
select idprni
from TBPRNI
)
, SR2 as -- Numérotation ordonnée des id disponibles
(
select idprni
, row_number() over(order by idprni asc) as rn
from delta
)
-- Sélection finale
select idprni
from SR2
where rn <= (select num from param);
IDPRNI
------
3535
3536
3538
3544
3545
3546
3547 |
Partager