【问题标题】:Join two select statements together将两个 select 语句连接在一起
【发布时间】:2017-04-30 06:58:58
【问题描述】:

我正在计算我们收取了多少入场费。

我有两个单独的查询都返回值,但我需要它们作为一个而不是两个单独的查询。

SELECT SUM(ENTRY) AS TOTAL1 FROM MONEY

SELECT SUM(ENTRY) AS TOTAL1 FROM MONEY2

【问题讨论】:

  • 你试过联合吗?
  • 我试了一下,但我相信所有列的值必须相同。我在一个列中有更多列。但我并不怀疑石南花我正确地加入了这个工会。
  • 您确实需要相同数量的列(每个列对具有相同的数据类型),但这很容易通过在选择中包含具有较少列的虚拟列来解决。 (例如:select ' ', 0 from dual;)
  • 我已经设法让两列与 union 一起使用,但值显示为 12 和 36。现在我只需要弄清楚如何将它们加在一起
  • 将 sum 函数与别名一起使用,它可以工作

标签: sql oracle join oracle11g oracle-sqldeveloper


【解决方案1】:

我需要使用 UNION 来将语句放在一起。然后使用下面得到一个数字。

SELECT SUM(X.TOTAL1) from 
(
 SELECT SUM(ENTRY) AS TOTAL1 FROM MONEY
 UNION
 SELECT SUM(ENTRY) AS TOTAL1 FROM MONEY2
) X;

【讨论】:

  • 小心UNION vs UNION ALL;如果两个总和恰好相等,您将得到错误的答案,因为UNION 删除了重复项。
【解决方案2】:
select sum(entry) as grand_total
from ( select entry from money
       union all
       select entry from money2
     );

重点是,你应该使用UNION ALL;并且每个表有多少列是无关紧要的,因为您不需要UNION ALL这两个表(每个表的所有列);您只需要UNION ALL 第一个表中的ENTRY 列和第二个表中的ENTRY 列。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-25
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    • 2016-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多