表结构如下: userid关联用户表
id type money time userId
8 1 0.577 2014-09-16 16:40:26 52 1
7 1 10 2014-09-16 16:38:29 52 1
9 2 0.577 2014-09-16 16:40:26 52 2
10 2 0.577 2014-09-16 16:40:26 52 2
11 2 0.577 2014-09-16 16:40:26 52 3
12 3 0 2014-09-16 16:40:26 52 3
15 3 100 2014-09-16 16:43:59 55 3
我的需求是这样的,想查出 type1 type2 type3每个用户的money和
界面效果是这种:
用户名 type1 type2 type3
test1 100 200 300
test2 500 300 1000
------解决思路----------------------
错了你是要money是吧
select
b.userName,
sum(case when a.type=1 then a.money else 0 end) type1,
sum(case when a.type=2 then a.money else 0 end) type2,
sum(case when a.type=3 then a.money else 0 end) type3
from typeTable a
left join userTable b on a.userid=b.userid
------解决思路----------------------
典型的行列转换, 有写数据库提供直接的转换函数。不过 case when 比较通用一点
select
userId,
sum(case when 'type' = 1 then money else 0 end) as type1,
sum(case when 'type' = 2 then money else 0 end) as type2,
sum(case when 'type' = 3 then money else 0 end) as type3
from tab group by userId;
你试试
------解决思路----------------------
提供思路:
1、你这种需求必须要以user表为中心。
2、left join (这里放每个usertype表的查询,安装用户的userid进行分组。这里必须就要带出type1、type2、type3出来,通过case when 来解决这个问题)