【问题标题】:multiple GROUP CONCAT多个 GROUP CONCAT
【发布时间】:2018-09-02 17:38:28
【问题描述】:

我有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

有什么想法吗??

【问题讨论】:

  • 考虑处理应用程序代码中的显示问题

标签: mysql group-concat


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    SELECT kode_satker,group_concat(map,'-',valuesum order by map) as new_value 从 ( 选择 satker.kode_satker, data.map, sum(data.value) 作为valuesum 来自萨特 左连接数据 在 data.kode_satker=satker.kode_satker 由 satker.kode_satker、data.map 分组)t 按kode_satker分组

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

    【讨论】:

      【解决方案3】:

      你需要一个子查询,没有一个你不能“嵌套”聚合;基本结构是

      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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-03-06
        • 2012-10-02
        • 2019-02-11
        • 2011-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多