我有一个查询与联合所有功能,每个给我计数(*)从各自的查询和另一个计数查询返回如下。我想要一个外部查询,给出总数。
第1次查询
select count(*) from a
union all
select count(*) from b;
第1次查询的示例结果:
| 计数|
| - ------|
| 十个|
| 四十|
第2次查询
select count(*) from xy;
第二次查询的示例结果:
| 计数|
| - ------|
| 二十个|
我希望输出像这样在2行:
| 表格|计数|
| - ------| - ------|
| xy|二十个|
| 阿布|五十|
类似上面的一些东西。我如何在oracle中实现这一点?请建议最好的方法来做到这一点。
我写了一个选择和联合,但不知道如何进一步进行。
4条答案
按热度按时间nafvub8i1#
一个选项是对第一查询返回的计数求和,然后将其与第二查询联合;另外,添加 constants,显示源代码:
5f0d552i2#
您可以用途:
kfgdxczn3#
可以对三个联合Select语句的计数求和,并按源的组合对结果进行分组:
使用上述示例数据,如下所示:
n9vozmp44#
假设您的真实的查询可能要复杂得多,我认为我们不会试图改变它们,也不会以某种方式合并或拆分它们。
您的第一个查询返回两行。您希望得到它们的总和,因此必须聚合结果并使用
SUM
。下面的查询对两个查询使用CTE(
WITH
子句中的子查询),然后对获取此总和的查询使用CTE。然后对最后的UNION ALL
查询使用这些CTE。