多个GROUP CONCAT

时间:2018-03-24 00:10:21

标签: mysql group-concat

我有sql数据和查询

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

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

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

我需要新的查询节目

server {
     location / {
     proxy_pass http://$http_host$request_uri;
     proxy_http_version 1.1;
     proxy_set_header Connection "";
     ...
    }
}

任何想法??

3 个答案:

答案 0 :(得分:0)

你需要一个子查询,你不能" 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

答案 1 :(得分:0)

以下是newvalue正确顺序的解决方案

选择kode_satker,group_concat(map,' - ',valuesum order by map)作为new_value 来自( 选择satker.kode_satker,data.map,sum(data.value)作为valuesum 来自satker 左连接数据 在data.kode_satker = satker.kode_satker上 group by satker.kode_satker,data.map)t 按kode_satker分组

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

答案 2 :(得分:0)

选择kode_satker,GROUP_CONCAT(按地图分隔符映射顺序' \ n')作为newmap,GROUP_CONCAT(xval order by map separator' \ n')作为rp FROM(SELECT satker.kode_satker,data.map,sum(value)as xval 来自satker 在data.kode_satker = satker.kode_satker上左连接数据 GROUP BY data.kode_satker,map)作为q group by kode_satker