有如下一张表【表1】,需要用一条sql得出【表2】的统计结果(纵向比赛项目不固定)。求mysql大神

参考:https://blog.csdn.net/rainyspring4540/article/details/50231435/

不能一步到位,还是要多条语句处理的。

https://ask.csdn.net/questions/7410386看下这个 我也碰到过这个问题,而且解决了

SELECT SUM( CASE WHEN 项目  = "兵乓球" THEN 奖牌  ELSE 0 END ) "兵乓球",
	     SUM( CASE WHEN 项目 = "羽毛球" THEN 奖牌 ELSE 0 END ) "羽毛球",
	     SUM( CASE WHEN 项目 = "游泳" THEN 奖牌 ELSE 0 END ) "游泳",
	     SUM( CASE WHEN 项目 = "篮球" THEN 奖牌 ELSE 0 END ) "篮球",
			 SUM( CASE WHEN 项目 = "击剑" THEN 奖牌 ELSE 0 END ) "击剑" 
FROM 表1 
GROUP BY 省份

// 其实也可以通过java 数据操作的

 

去网上稍微查了下,应该是写存储过程,先select一次group by 项目,把所有项目拿到,然后循环渲染成列sum(项目)

然后就select 省份,渲染列函数 from 表 group by 省份

具体实现就没去查了,因为这东西在我眼中毫无作用,我是做后端的,正常你要的数据直接select sum()  group by 省份、项目,然后后端自己做下处理就行了

可以编写存储过程,通过预处理动态生成查询sql,再执行。