Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.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 如何迭代变量?我收到错误PLS-00103_Sql_Oracle - Fatal编程技术网

Sql 如何迭代变量?我收到错误PLS-00103

Sql 如何迭代变量?我收到错误PLS-00103,sql,oracle,Sql,Oracle,我想迭代一个名为C_ESTACION_ID的变量,但收到一个错误PLS-00103 我尝试了建议的解决方案,但没有成功-> 我希望变量C_ESTACION_ID的值为28并执行查询,29并执行查询,30并执行查询 我希望变量C_ESTACION_ID的值为28并执行查询,29并执行查询,30并执行查询 不确定你到底想达到什么,但我认为你需要更换这一行 INSP.C_ESTACION_ID=28 。。。与 INSP.C_ESTACION_ID in ( 28, 29, 30 ) 然而,这并不能

我想迭代一个名为C_ESTACION_ID的变量,但收到一个错误PLS-00103

我尝试了建议的解决方案,但没有成功->

我希望变量C_ESTACION_ID的值为28并执行查询,29并执行查询,30并执行查询

我希望变量C_ESTACION_ID的值为28并执行查询,29并执行查询,30并执行查询

不确定你到底想达到什么,但我认为你需要更换这一行

INSP.C_ESTACION_ID=28
。。。与

INSP.C_ESTACION_ID in ( 28, 29, 30 )
然而,这并不能修复PLS-00103错误,该错误是由特殊的嵌套select语句引起的。您需要重写查询,以便它在常规查询(或子查询)中导出总计,并将这些值传递给外部查询以执行最终算法。大概是这样的:

 SELECT q1.N_ANNO
        , q1.C_ESTACION_ID as ESTACION
        , 100 * q1.TOTAL_TAX_AMB1 / q2.TAXIS_Y_AMBULANCIAS_PRIMERA ) TAXIS_Y_AMBULANCIAS_PRIMERA 
 FROM ( SELECT INSP.C_ESTACION_ID
               , INSP.N_ANNO
               , SUM(CASE WHEN TIPO_USO_VEHICULO='Taxi' THEN 1 ELSE 0 END 
                     + CASE WHEN TIPO_USO_VEHICULO='Ambulancia' THEN 1 ELSE 0 END ) AS TOTAL_TAX_AMB1
        FROM  -- -----------
        WHERE INSP.N_ANNO = 2016
        AND INSP.C_ESTACION_ID in (28, 29, 30)
        GROUP BY INSP.C_ESTACION_ID
               , INSP.N_ANNO
      ) q1
      join (SELECT N_ANNO,  C_ESTACION_ID, COUNT(*) AS TAXIS_Y_AMBULANCIAS_PRIMERA
              FROM ITV2_INSPECCIONES 
              WHERE N_FASE=1) q2
       on q1.N_ANNO = q2.N_ANNO
       and q1.C_ESTACION_ID = q2.C_ESTACION_ID 

注意:这可能无法提供您需要的确切答案。还可以通过将两个子查询q1和q2组合成一个子查询来进一步简化它。但您没有发布完整的查询,也没有发布数据模型、样本数据或解释,因此我们不可能编写最佳工作解决方案

迭代一个变量是什么意思?您能否通过显示示例表输入和预期输出来重新表述您的问题?请更清楚地布局您的代码。可读性是一个特性,尤其是当你在互联网上向一群陌生人询问如何帮助你改进代码时。同样,同样的问题也不要发布一次以上。上次您没有得到满意的答案,因为您发布了一段代码,但未能充分解释您的问题。为了将来的参考,你应该编辑这个问题,提供更多的细节和解释,而不是问一个新问题。谢谢APC。这就是我想要的。我无法编辑问题,因为代码太多。我是sql领域的新手,所以我清理了代码以供尝试:从SELECT INSP.C_ESTACION_ID中选择q1.N_ANNO,q1.C_ESTACION_ID,从ITV2_Inspections INSP中选择INSP.N_ANNO=2016,从INSP.C_ESTACION_ID中选择INSP.N_ANNO,34由督察助理督察(督察编号q1)组成的小组;在q1.N_ANNO=q2.N_ANNO和q1.C_ESTACION_ID=q2.C_ESTACION_ID=q2.C_ESTACION_ID上加入从ITV2_规范q2中选择N_ANNO,但只显示一行不起作用,因为您没有从ITV2_规范中选择C_ESTACION_ID
 SELECT q1.N_ANNO
        , q1.C_ESTACION_ID as ESTACION
        , 100 * q1.TOTAL_TAX_AMB1 / q2.TAXIS_Y_AMBULANCIAS_PRIMERA ) TAXIS_Y_AMBULANCIAS_PRIMERA 
 FROM ( SELECT INSP.C_ESTACION_ID
               , INSP.N_ANNO
               , SUM(CASE WHEN TIPO_USO_VEHICULO='Taxi' THEN 1 ELSE 0 END 
                     + CASE WHEN TIPO_USO_VEHICULO='Ambulancia' THEN 1 ELSE 0 END ) AS TOTAL_TAX_AMB1
        FROM  -- -----------
        WHERE INSP.N_ANNO = 2016
        AND INSP.C_ESTACION_ID in (28, 29, 30)
        GROUP BY INSP.C_ESTACION_ID
               , INSP.N_ANNO
      ) q1
      join (SELECT N_ANNO,  C_ESTACION_ID, COUNT(*) AS TAXIS_Y_AMBULANCIAS_PRIMERA
              FROM ITV2_INSPECCIONES 
              WHERE N_FASE=1) q2
       on q1.N_ANNO = q2.N_ANNO
       and q1.C_ESTACION_ID = q2.C_ESTACION_ID