Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment répéter une requête dans Oracle

Chaque appel de DBMS_RANDOM.value() renvoie une valeur différente . Par conséquent, il n'y a aucune garantie que tout appel tombera entre l'une de vos limites. En fait, c'est statistiquement peu probable. Par conséquent, la plupart du temps, vous obtiendrez un retour NULL, car vous n'avez défini aucune branche ELSE.

Voici une solution alternative qui génère cent valeurs aléatoires.

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
;

Étant donné la façon dont votre code définit les limites des branches, la plupart des random_groups sera 4 .

Le rôle de TEMP_TRT n'est pas clair d'après votre code (jouet ?), J'ai donc décidé de l'ignorer. Veuillez modifier votre question pour ajouter plus de détails si cela vous rend malheureux