多个 GROUP CONCAT

multiple GROUP CONCAT

我有 sql 数据和查询

http://sqlfiddle.com/#!9/749bec/1

当前查询的结果不是我需要的

SELECT 
satker.kode_satker,GROUP_CONCAT(DISTINCT(data.map) ,'-',value SEPARATOR '\n') as newvalue 
FROM satker 
left join data on data.kode_satker=satker.kode_satker 
GROUP BY data.kode_satker

因为它显示

kode_satker     newvalue
100     A-100 A-200 B-400 B-100
200     C-100 A-100 A-100

我需要新的查询显示

kode_satker     newvalue
100     A-300 B-500
200     A-200 C-100

有什么想法吗??

你需要一个子查询,没有一个就不能"nest"聚合;基本结构是

SELECT a, GROUP_CONCAT(CONCAT(b, '-', x_sum)) 
FROM (
    SELECT a, b, SUM(x) AS x_sum 
    FROM some_table 
    GROUP BY a, b
) AS q 
GROUP BY a

这是新值顺序正确的解决方案

SELECT kode_satker,group_concat(map,'-',valuesum order by map) as new_value 从 ( Select satker.kode_satker, data.map, sum(data.value) as valuesum 来自萨克 左连接数据 在 data.kode_satker=satker.kode_satker 按 satker.kode_satker, data.map) t 分组 按 kode_satker

分组

结果: kode_satker new_value 100. A-300,B-500 200.A-200,C-200

SELECT kode_satker,GROUP_CONCAT(map order by map separator '\n') as newmap,GROUP_CONCAT(xval order by map separator '\n' ) 作为 rp 来自 (SELECT satker.kode_satker,data.map,sum(value) 作为 xval 来自萨克 在 data.kode_satker=satker.kode_satker 上左连接数据 GROUP BY data.kode_satker,map ) as q group by kode_satker