MYSQL加入同一张表,合并空字段和总和

时间:2018-10-19 13:21:47

标签: mysql join

我有两行属于同一采购订单。 正如您在下面看到的那样,佣金和sales_value未合并为一行。我们从外部收到的这些数据,无法更改。

我已经尝试了大约一周时间来获取正确的查询,但不幸的是,我的预期结果却不然

+--------+-------------+------------+-------+
|   PO   | sales_value | commission | total |
+--------+-------------+------------+-------+
| XXXXXX |             |      -1.60 | -1.60 |
| XXXXXX |       28.89 |            | 28.89 |
+--------+-------------+------------+-------+

我尝试创建查询以获取以下结果:

+--------+-------------+------------+-------+
|   PO   | sales_value | commission | total |
+--------+-------------+------------+-------+
| XXXXXX |       28.89 |      -1.60 | 27.29 |
+--------+-------------+------------+-------+

应将佣金移至第二行的空佣金字段,并且应将总计金额加在一起。这样我们就可以正确使用信息。

我尝试了多种可能性以及MySQL的join函数。 不幸的是,我没有显示测试结果,因为我没有保存测试查询。

2 个答案:

答案 0 :(得分:2)

您需要将GROUP BYSUM()聚合一起使用,以便将特定PO的所有行合并为一个:

SELECT
  PO,
  SUM(sales_value) AS sales_value, 
  SUM(commission) AS commission, 
  SUM(sales_value) + SUM(commission) AS total
FROM your_table_name -- <- use your table name here
GROUP BY PO

答案 1 :(得分:0)

select po,
sum(ifnull(sales_value,0)) as sales_value,
sum(ifnull(commission,0)) as commission,
sum(ifnull(total,0)) as total
 from
#yourtable
group by po