【问题标题】:How to SUM if column1 and column2 have same value [duplicate]如果column1和column2具有相同的值,如何求和[重复]
【发布时间】:2022-01-07 08:12:01
【问题描述】:

下面是我的示例数据库。我一直在尝试获取每个代码的总和。我将在下面附上我的代码

+----+-----------+----------+-------+
| AMOUNT1 | CODE1 | AMOUNT2 | CODE2 |
+---------+-----------+-------------+
|  500    |  023  |    5    |  020  |
|  9203   |  021  |    20   |  021  |
|  200    |  020  |    50   |  023  |
|  50     |  023  |    56   |  023  |
|  100    |  022  |    87   |  022  |
+---------+-------+---------+-------+
SELECT code1, code2
  (SUM(amount1)+ SUM(amount2)) as TOTAL,
GROUP BY code1, code2

我正在尝试做的是下面

+----+------------+
|  TOTAL  | CODE1 |
+---------+-------+
|  656    |  023  | 
|  9223   |  021  | 
|  205    |  020  |
|  187    |  022  |
+---------+-------+

【问题讨论】:

  • 使用联合反透视,然后聚合。请修正标题 - 你的意思是 code1 和 code2 是否相同..
  • 到目前为止你尝试过什么?你被困在哪里了?这个问题和 PHP 有什么关系?
  • 首先是UNION ALL,然后是GROUP BY
  • 为什么用户通过 cmets 提供解决建议?这就是答案的目的。

标签: php mysql sql


【解决方案1】:

有工会。
但另一种方法是为每个总数加入 2 个子查询。

但它只会显示代码 1 和代码 2 中的代码。

SELECT
  q1.code, 
  q1.TOTAL + q2.TOTAL AS TOTAL
FROM 
(
    SELECT code1 AS code, SUM(amount1) AS TOTAL
    FROM your_table
    GROUP BY code1
) q1
INNER JOIN 
(
    SELECT code2 AS code, SUM(amount2) AS TOTAL
    FROM your_table
    GROUP BY code2
) q2
ON q2.code = q1.code
ORDER BY q1.code

【讨论】:

    【解决方案2】:
    SELECT code1, SUM(AMOUNT1) 
    FROM 
    (
     SELECT code1,  AMOUNT1
     FROM <table>
      UNION ALL
     SELECT code2,  AMOUNT2
     FROM <table>
    )
    GROUP BY code1
    

    【讨论】:

    • 请在您的答案中添加一些解释,以便其他人可以从中学习
    • 这是不正确的,联合将丢弃代码/数量重复的行,从而低估结果 - UNION ALL 不会,但这是早期工作答案的副本..
    猜你喜欢
    • 2019-03-14
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 2021-01-30
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    相关资源
    最近更新 更多