当前位置: 首页 > 知识库问答 >
问题:

SQL合并和选择一个结果

白禄
2023-03-14

我有两个针对同一个表的select查询,这两个查询在select部分中都只包含一个< code>sum(),但是在< code>where子句中有所不同。我需要做的是对两个查询的结果求和。

查询示例:

SELECT SUM(amount) 
FROM EXAMPLETABLE
WHERE  IDATE BETWEEN '2017/01/01' AND '2017/12/31' AND SOMESTATUS = 0

SELECT SUM(otherAmount) 
FROM EXAMPLETABLE
WHERE  IDATE BETWEEN '2018/01/01' AND '2018/12/31' AND SOMESTATUS = 1

我需要的是像这样的东西

SELECT SUM(amount+otherAmount)
FROM EXAMPLETABLE

其中选择金额其他金额,如我的示例查询中所示。

我试着回答这个问题,但没能成功。我还尝试用子选择替换字段,但这不起作用,因为select不允许在聚合函数中使用

共有3个答案

南宫保臣
2023-03-14

非常简单:

SELECT SUM((1-SOMESTATUS)*amount + SOMESTATUS*(otherAmount))
FROM EXAMPLETABLE
WHERE IDATE BETWEEN '2018-01-01' AND '2018-12-31'

…小心你的日期。我想你必须用破折号代替斜线

东门晓博
2023-03-14

您可以进行这种条件聚合。

SELECT SUM(case when IDATE BETWEEN '2017/01/01' AND '2017/12/31' AND SOMESTATUS = 0 then amount else 0 end) +
SUM(case when IDATE BETWEEN '2018/01/01' AND '2018/12/31' AND SOMESTATUS = 1 then amount else 0 end) 
FROM EXAMPLETABLE
燕昊东
2023-03-14

这是一个简单的方法:

SELECT SUM(b.a)
FROM (
    SELECT SUM(amount) a
    FROM EXAMPLETABLE
    WHERE IDATE BETWEEN '2017/01/01'
            AND '2017/12/31'
        AND SOMESTATUS = 0

    UNION ALL

    SELECT SUM(otherAmount) a
    FROM EXAMPLETABLE
    WHERE IDATE BETWEEN '2018/01/01'
            AND '2018/12/31'
        AND SOMESTATUS = 1
    ) AS b

我刚刚在两个查询之间创建了一个联合并对结果求和。

 类似资料:
  • 问题内容: 有几种将数据插入表中的方法: 有没有办法使用,但我不想在colA中插入例如colAA值,而是总是将其插入1。 感谢帮助 问题答案: 只需在列表中添加一个常量

  • 问题内容: 假设我有一张桌子: 这将返回自特定日期以来销售数量的产品清单。有没有一种方法不仅可以选择这个和,而且还可以选择没有where条件的和?我想查看每种产品自特定日期以来的销售情况以及所有(没有日期限制)的销售情况。 问题答案:

  • 问题内容: 我有三个SQL选择,需要将它们的结果加在一起。这三个中的两个使用相当复杂的联接。 我需要的是所有三个值的总和。 。无论如何,是否可以在单个语句中执行此操作? 问题答案: 你可以的。 请勿使用,因为它会忽略重复的值(会导致)。

  • 我的表是: 我有一个包含10,000个地址的列表,如果地址存在于表中,我将循环访问该列表以检索相应的纬度/经度。 查询如下所示: 然后我检查结果集,看看是否有匹配。然后通过上面的查询循环其他9,999个地址,这花费的时间太长了。 是否有一种方法可以创建一个包含所有10000个地址的查询,并返回一个包含4列的结果集: 任何未找到地址在结果集列中都应该有一个空(0或null)纬度/经度值。我假设我可以

  • 问题内容: 我试图创建一个简单的存储过程,将查询的结果存储到一个字符串中。 将返回 我想将“ aaaa,bbbb,cccc”存储到v_string1中。我所能想到的只是一个游标…是否有更好的方法来处理此问题? 问题答案: 使用SQL Fiddle:

  • 我在MySQL/MariaDB中有两个不同的表,它们有关于计算机系统的不同数据。computer_name有一个公共字段,但同一台计算机的字段内容可能不同。在表A中,computer_name可以是'hostname',而在表B中,computer_name可以是'hostname@dom1.domain'。我需要查看表A中的col1、col2、col3和表B中的col5、col6、col7,其中