sql >> Base de Datos >  >> RDS >> Oracle

Cómo repetir una consulta en Oracle

Cada llamada de DBMS_RANDOM.value() devuelve un valor diferente . En consecuencia, no hay garantía que cualquier llamada caerá entre cualquiera de sus límites. De hecho, es estadísticamente improbable. En consecuencia, la mayoría de las veces obtendrá un NULL devuelto, porque no ha definido ninguna rama ELSE.

Aquí hay una solución alternativa que genera cien valores aleatorios.

with dr as (
    select DBMS_RANDOM.value val
    from dual
    connect by level <= 100 
)
select dr.val
      , case when dr.val >= 0 and dr.val<=0.053 then 1
            when dr.val > 0.053 and dr.val <= 0.097 then 2
            when dr.val > 0.097 and dr.val <= 0.142 then 3
            else 4 
end random_groups
from dr
;

Dada la forma en que su código define los límites de las ramas, la mayoría de los random_groups será 4 .

No está claro en su código publicado (¿juguete?) cuál es el papel de TEMP_TRT, así que decidí ignorarlo. Por favor, edite su pregunta para agregar más detalles si esto no te hace feliz