MYSQL连接同一个表,合并空字段并求和

MYSQL连接同一个表,合并空字段并求和,mysql,join,Mysql,Join,我有两行属于同一采购订单。 正如您在下面看到的,佣金和销售额没有合并到一行中。我们从外部收到此数据,不可能更改 我已经花了大约一个星期的时间试图得到正确的查询,不幸的是没有得到我预期的结果 +--------+-------------+------------+-------+ | PO | sales_value | commission | total | +--------+-------------+------------+-------+ | XXXXXX |

我有两行属于同一采购订单。 正如您在下面看到的,佣金和销售额没有合并到一行中。我们从外部收到此数据,不可能更改

我已经花了大约一个星期的时间试图得到正确的查询,不幸的是没有得到我预期的结果

+--------+-------------+------------+-------+ | 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函数尝试了很多可能性。 很遗憾,我无法显示我的试用,因为我没有保存测试查询。

您需要使用GROUP BY with AGGRATION,以便将特定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

这看起来很简单。。学会了新的观点,谢谢!感谢您提供这段代码片段,它可能会提供一些有限的、即时的帮助。A通过展示为什么这是一个很好的解决问题的方法,并将使它对未来有其他类似问题的读者更有用。请在您的回答中添加一些解释,包括您所做的假设。
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