如何在同一查询和同一表中添加两个select命令的结果-Oracle SQL

如何在同一查询和同一表中添加两个select命令的结果-Oracle SQL,oracle,sum,Oracle,Sum,我有一个很好的查询: SELECT RE.IDREUNIONFALLA as "IdReunion", NVL((select count(1) as pozos from REUNION_FALLAPREMATURA where IDREUNIONFALLA=RE.IDREUNIONFALLA group by IDREUNIONFALLA),0) as "PlanificadosFallas", NVL((s

我有一个很好的查询:

SELECT 
    RE.IDREUNIONFALLA as "IdReunion",
    NVL((select count(1) as pozos 
        from REUNION_FALLAPREMATURA 
        where IDREUNIONFALLA=RE.IDREUNIONFALLA  
        group by IDREUNIONFALLA),0)  as "PlanificadosFallas",
    NVL((select count(1) as pozos 
        from REUNION_FALLAPOZOS_AD 
        where IDREUNIONFALLA=RE.IDREUNIONFALLA  
        group by IDREUNIONFALLA),0)  as "PlanificadosPozos"
FROM  REUNIONFALLA RE
此查询返回多个包含两列的行,每个行都有一个整数,如下所示:

我需要做的是,在一个新的列中,从每一行得到总和。你可以在下一张图片上看到我的意思:

我已经想到了:

SELECT 
    NVL((SELECT count(1) as pozos 
        from REUNION_FALLAPREMATURA 
        where IDREUNIONFALLA=RE.IDREUNIONFALLA 
        group by IDREUNIONFALLA),0)  as "PlanificadosFallas",
    NVL((SELECT count(1) as pozos 
        from REUNION_FALLAPOZOS_AD 
        where IDREUNIONFALLA=RE.IDREUNIONFALLA 
        group by IDREUNIONFALLA),0)  as "PlanificadosPozos",
    NVL((SELECT  SUM(fallas) PlanificadosTotal 
        FROM -- i add this five lines
            ( 
                select count(1) as fallas 
                from REUNION_FALLAPREMATURA 
                where IDREUNIONFALLA=RE.IDREUNIONFALLA  
                group by IDREUNIONFALLA

                UNION ALL

                select count(1) as fallas 
                from REUNION_FALLAPOZOS_AD 
                where IDREUNIONFALLA=RE.IDREUNIONFALLA 
                group by IDREUNIONFALLA
            )),0) as "Total"
FROM  REUNIONFALLA RE
但我得到了下一个错误:

ORA-00904:“RE.”IDREUNIONFALLA:无效标识符

有解决方案吗?

[编辑] 这个比较干净:

SELECT 
    RE.IDREUNIONFALLA as "IdReunion",
    NVL(t1.pozos,0)  as "PlanificadosFallas",
    NVL(t2.pozos,0)  as "PlanificadosPozos",
    (NVL(t1.pozos,0)s + NVL(t2.pozos,0)) AS "Total"
FROM  REUNIONFALLA RE
LEFT JOIN (
    select IDREUNIONFALLA, count(1) as pozos
    from REUNION_FALLAPREMATURA 
    group by IDREUNIONFALLA
) t1 
    ON t1.IDREUNIONFALLA = RE.IDREUNIONFALLA
LEFT JOIN (
    select IDREUNIONFALLA, count(1) as pozos 
    from REUNION_FALLAPOZOS_AD 
    group by IDREUNIONFALLA
) t2 
    ON t2.IDREUNIONFALLA=RE.IDREUNIONFALLA 
正如您所看到的,您只进行了一次计数,而不是针对每一行:如果您有大量的行,则应该运行得更快


这应该做到:

SELECT 
    t1.IdReunion,
    t1.PlanificadosFallas,
    t1.PlanificadosPozos,
    (t1.PlanificadosFallas + t1.PlanificadosPozos) AS "Total"
FROM (
    SELECT 
          RE.IDREUNIONFALLA as "IdReunion",
          NVL((select count(1) as pozos from REUNION_FALLAPREMATURA where IDREUNIONFALLA=RE.IDREUNIONFALLA  group by IDREUNIONFALLA),0)  as "PlanificadosFallas",
          NVL((select count(1) as pozos from REUNION_FALLAPOZOS_AD where IDREUNIONFALLA=RE.IDREUNIONFALLA  group by IDREUNIONFALLA),0)  as "PlanificadosPozos"
    FROM  REUNIONFALLA RE
) AS t1

谢谢你的回答!我仍然有下一个错误:“ORA-00904:“T1”。“IDREUNIONFALLA”:无效标识符“@GabrielPeralta你在
REUNION\u FALLAPREMATURA
表中有
IDREUNIONFALLA
字段吗?我将IDREUNIONFALLA添加到左边的连接语句中,它成功了!非常感谢@GabrielPeralta啊是的,这是一个子查询,我需要明确它,你是对的。不客气&不要忘记用“接受这个答案”来标记您的问题已解决。)您的问题与过程编程语言的名称PL/SQL无关。这都是关于Oracle SQL的。我会相应地编辑你的标签和标题。