我在添加两个选择结果方面遇到了问题。我的代码是:
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列必须是可视的。
答案 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;