sql >> Database >  >> RDS >> Oracle

Een query herhalen in Oracle

Elke aanroep van DBMS_RANDOM.value() retourneert een andere waarde . Bijgevolg is er geen garantie dat elke oproep tussen uw grenzen zal vallen. In feite is het statistisch onwaarschijnlijk. Daarom krijg je meestal een NULL terug, omdat je geen ELSE branch hebt gedefinieerd.

Hier is een alternatieve oplossing die honderd willekeurige waarden genereert.

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
;

Gezien de manier waarop uw code de grenzen van de takken definieert, zijn de meeste random_groups wordt 4 .

Het is niet duidelijk uit je geposte (speelgoed?) code wat de rol van TEMP_TRT is, dus heb ik besloten het te negeren. Bewerk je vraag om meer details toe te voegen als dit je ongelukkig maakt



  1. Query met SQL-datumintervallen

  2. Hoe de waarden van de NLS-parameters in Oracle Database te controleren?

  3. Controleer of een tabel wordt verwezen door een externe sleutel in SQL Server met OBJECTPROPERTY()

  4. Uitvoer van een MySQL-query omkeren?