首页 新闻 会员 周边 捐助

mysql如何用group by 和自定义函数进行多个字段组合查询。

2
悬赏园豆:100 [已解决问题] 解决于 2020-03-18 11:52

RT;

最近项目中遇到一个需求,项目中有一张表:person

表结构如下:

 

客户要求从前端任意选择两个字段进行组合查询  如 选择了性别和学位两个字段

查询结果如下:

    硕士   博士   博士后  研究生

男   1      1         0        0

女   0      0         1        1     

 

项目经理告诉我用 group by  +  自定义函数  来查询 。 已经了解过group  by  用法 和 自定义函数语法,就是不知道怎么写这个自定义函数。是否用纯sql就能查出来  还是要借助代码逻辑+sql ?   如何实现  或者有其他更好的思路来实现。

语言是java  

 

< >
分享
最佳答案
-1

DECLARE @Sql NVARCHAR(4000)

SET @Sql =' '

SELECT @Sql =@Sql+'SUM(CASE WHEN Classify ='''+Classify+''' THEN TotalPrice ELSE 0 END) AS '+Classify+',' FROM tbl_uuu GROUP BY Classify

SET @Sql = 'SELECT Department,'+LEFT(@Sql,LEN(@Sql)-1)+' FROM tbl_uuu GROUP BY Department'

EXEC (@Sql)

收获园豆:100
我要这昵称有何用 | 菜鸟二级 |园豆:308 | 2016-09-18 21:32

这不是mysql吧

Coder-Shen | 园豆:18 (初学一级) | 2016-09-18 23:27
其他回答(3)
0

说思路,自己想办法写:

按行分,可以用group_by 字段名,解决。

按列分,其实是按每个列可用的值,这大概是要自定义一个函数,如上面的结果

select  '学历'='硕士', '学历'='博士', '学历'='博士后', '学历'='研究生' from person group by '姓别'

Anthony-黄亮 | 园豆:219 (菜鸟二级) | 2016-09-19 14:25
0

Select sex,sum(if(xw='硕士',1,null) as '硕士',sum(if(xw='博士',1,null)) as '博士' #后面俩学历一样 手机码切换不方便
from person
group by sex

Mr_Cxy | 园豆:210 (菜鸟二级) | 2016-09-20 06:24
0

用报表工具,或者用excel的数据透视表

小彬 | 园豆:947 (小虾三级) | 2016-09-21 19:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册