问题:
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的数据透视表