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