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

2020-03-18 11:23发布

问题:

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)



回答2:

说思路,自己想办法写:

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

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

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



回答3:

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



回答4:

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