当前位置: 代码迷 >> Java Web开发 >> 一句sql语句的写法。解决方法
  详细解决方案

一句sql语句的写法。解决方法

热度:124   发布时间:2016-04-16 21:55:32.0
一句sql语句的写法。
表结构如下: 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 来解决这个问题)
  相关解决方案