如何在同一查询和同一表中添加两个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的。我会相应地编辑你的标签和标题。