我有一个像这样的mysql表
id |code|price|quantity
1 |0001|10.00|1
2 |0001|10.00|1
3 |0001|15.00|3
4 |0001|15.00|1
5 |0002| 5.00|2
6 |0002| 5.00|1
使用函数concat
和group_concat
我得到了这个结果:
SELECT code, group_concat( CONCAT( quantity, 'x', FORMAT(price, 2 ))SEPARATOR '+' ) AS sales
FROM detalle_sales
GROUP BY code
code|sales
0001|1x10,00+1x10,00+3x15.00+1x15.00
0002|2x5.00+1x5.00
如何使用mysql按价格对数量进行分组?
code|sales
0001|2x10.00+4x15.00
0002|3x5.00
我是通过php完成的,但是当销售字段太长时,结果会被截断并给出不准确的值。
答案 0 :(得分:0)
您需要一个子查询,它将具有相同价格的所有行组合在一起,然后是一个按GROUP_CONCAT
执行code
的主查询。
SELECT code, group_concat( CONCAT( quantity, 'x', FORMAT(price, 2 ))SEPARATOR '+' ) AS sales
FROM (
SELECT code, price, SUM(quantity) as quantity
FROM detalle_sales
GROUP by code, price) AS subq
GROUP BY code
答案 1 :(得分:0)
虽然我认为在数据库中创建这种格式并不是一个好主意,但这是如何做的:
SELECT code, group_concat( CONCAT( total, 'x', FORMAT(price, 2 ))SEPARATOR '+' ) AS sales
FROM (
SELECT
code, price,
SUM(quantity) AS total
FROM detalle_sales
GROUP BY code, price
) AS baseview
GROUP BY code