添加两个COUNT个结果

时间:2016-02-03 09:03:54

标签: sql oracle oracle11g

我在添加两个选择结果方面遇到了问题。我的代码是:

SELECT a AS total_rows, b
FROM (
   SELECT COUNT (*) as a, E.b as b
   FROM         table1 C
   JOIN         table2 D
   ON           D.MY_ID = C.MY_ID
   JOIN         table3 E
   ON           E.NEW_ID = C.NEW_ID
   WHERE        E.b BETWEEN 1 AND 4
   GROUP BY     E.b
   ORDER BY     E.b
   ) 
UNION ALL (
       SELECT COUNT(*)as a, E.b as b
       FROM          table2 D
       JOIN          table4 S
       ON            S.PERSON_ID IN (D.f_ID, D.g_ID)
       JOIN          table3 E
       ON            E.LOCATION_ID IN (Q.LOC_FROM_ID, Q.LOC_TO_ID)
       WHERE         L.AISLE BETWEEN 1 AND 8
       GROUP BY      E.b
       ORDER BY      E.b)

当我单独使用它们时,每个选择都很完美。它也适用于我试图这样做而不选择E.b.

我实现的目标是显示彼此相加的两个选择的结果,但必须按E.b列分组,并且结果中的E.b列必须是可视的。

1 个答案:

答案 0 :(得分:2)

UNION ALL 查询用作子查询,并获取计数的 SUM

WITH data AS(
   SELECT COUNT (*) as a, E.b as b
   FROM         table1 C
   JOIN         table2 D
   ON           D.MY_ID = C.MY_ID
   JOIN         table3 E
   ON           E.NEW_ID = C.NEW_ID
   WHERE        E.b BETWEEN 1 AND 4
   GROUP BY     E.b
   ORDER BY     E.b
UNION ALL 
       SELECT COUNT(* )as a, E.b as b
       FROM          table2 D
       JOIN          table4 S
       ON            S.PERSON_ID IN (D.f_ID, D.g_ID)
       JOIN          table3 E
       ON            E.LOCATION_ID IN (Q.LOC_FROM_ID, Q.LOC_TO_ID)
       WHERE         L.AISLE BETWEEN 1 AND 8
       GROUP BY      E.b
       ORDER BY      E.b
)
SELECT sum(A) total, b 
FROM data
GROUP BY b;