Oracle
 sql >> Datenbank >  >> RDS >> Oracle

So wiederholen Sie eine Abfrage in Oracle

Jeder Aufruf von DBMS_RANDOM.value() gibt einen anderen Wert zurück . Folglich gibt es keine Garantie dass jeder Anruf zwischen Ihre Grenzen fällt. Tatsächlich ist es statistisch unwahrscheinlich. Folglich erhalten Sie meistens NULL zurück, weil Sie keinen ELSE-Zweig definiert haben.

Hier ist eine alternative Lösung, die hundert Zufallswerte generiert.

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
;

Angesichts der Art und Weise, wie Ihr Code die Grenzen der Zweige definiert, sind die meisten der random_groups wird 4 sein .

Aus Ihrem geposteten (Spielzeug?) Code geht nicht hervor, welche Rolle TEMP_TRT spielt, also habe ich beschlossen, ihn zu ignorieren. Bitte bearbeiten Sie Ihre Frage um weitere Details hinzuzufügen, wenn Sie dies unzufrieden macht