我有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知道吗??
发布于 2018-03-24 03:13:43
以下是具有正确的新值顺序的解决方案
选择kode_satker,group_concat(map,'-',值按地图的顺序)作为new_value (从satker.kode_satker左连接数据选择satker.kode_satker,data.map,sum(data.value)作为值,data.map按kode_satker选择data.kode_satker=satker.kode_satker组)
结果: kode_satker new_value 100。A-300,B-500 200。A-200,C-200
发布于 2018-03-24 00:32:10
如果需要子查询,则没有子查询就不能“嵌套”聚合;基本结构是
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发布于 2018-03-24 22:40:44
选择kode_satker,GROUP_CONCAT(映射分隔符的映射顺序'\n')作为新映射,GROUP_CONCAT(按地图分隔符'\n')作为rp (从kode_satker选择satker.kode_satker,data.map,和(值)作为data.kode_satker=satker.kode_satker组的左连接数据( data.kode_satker )作为Q组
https://stackoverflow.com/questions/49459902
复制相似问题