Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在Oracle中重复查询_Sql_Oracle - Fatal编程技术网

Sql 如何在Oracle中重复查询

Sql 如何在Oracle中重复查询,sql,oracle,Sql,Oracle,我需要重复这个问题100次。我想我应该使用循环函数,但没有找到任何解决方法 select case when DBMS_RANDOM.value >= 0 and DBMS_RANDOM.value<=0.053 then 1 when DBMS_RANDOM.value > 0.053 and DBMS_RANDOM.value <= 0.097 then 2 when DBMS_RANDOM.value > 0.0

我需要重复这个问题100次。我想我应该使用循环函数,但没有找到任何解决方法

select case when DBMS_RANDOM.value >= 0 and DBMS_RANDOM.value<=0.053 then 1
            when DBMS_RANDOM.value > 0.053 and DBMS_RANDOM.value <= 0.097 then 2
            when DBMS_RANDOM.value > 0.097 and DBMS_RANDOM.value <= 0.142 then 3
end random_groups
from temp_trt;
以下是temp_trt的样本数据

您可以通过选择级别使用行生成技术。。。按级别连接>=100结构,如图所示

select level, rg.random_groups
 from
    ( select case when DBMS_RANDOM.value >= 0 and DBMS_RANDOM.value<=0.053 then 1
                when DBMS_RANDOM.value > 0.053 and DBMS_RANDOM.value <= 0.097 then 2
                when DBMS_RANDOM.value > 0.097 and DBMS_RANDOM.value <= 0.142 then 3
     end random_groups
    from dual ) rg
connect by level <= 100
每次调用DBMS_RANDOM.value都会返回不同的值。因此,不能保证任何调用会在您的任何边界之间。事实上,这在统计上是不可能的。因此,大多数情况下,您将返回NULL,因为您没有定义其他分支

这是一个生成一百个随机值的替代解决方案

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
;
根据代码定义分支边界的方式,大多数随机_组将为4


从你贴的玩具上看不清楚?编码TEMP_TRT的角色是什么,所以我决定忽略它。如果这让您不满意,请编辑您的问题以添加更多详细信息

有关Oracle PL/SQL循环的信息:您将如何处理查询结果?你想怎么介绍?temp_trt中有多少行?您还没有解释如何在流程中应用TMP_trt的内容。粘贴的图像有五行。这是否意味着您需要一个由随机组的5000个随机生成的值组成的结果集?如果它有六排,会是6000排吗?除了控制最终结果集中的行数之外,您是否还使用了中的内容?如何填充TMP_TRT?另外,请避免使用图像来表示代码或数据。许多人无法从图像转储站点查看图像。另外,图像不能在测试用例中使用。我已经撤回了我的PL/SQL解决方案,因为在这种情况下,它显然不如使用CONNECT BY。我想从表temp\U trt中获取随机数。不好。正如我在回答中所解释的,我不明白您是如何使用TMP_TRT的。请编辑您的问题,为TMP_TRT提供一些样本数据,并演示这如何影响您的预期结果。