码迷,mamicode.com
首页 > 数据库 > 详细

SQL行转列

时间:2014-05-08 18:26:31      阅读:343      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   code   width   http   

之前在处理数据时,没有考虑过使用行转列,更多的是使用创建临时表,用过之后销毁,今天碰到了棘手的问题,采用临时表很复杂,所以采用行转列来实现。

先描述一下问题,当下做的人事考核系统中,分为上半年、下半年的考核,考核类型有多种,查询出来的数据如下:

bubuko.com,布布扣

可以看出来,这样数据处理的效果并不好,而从MSSQL2005起,MSSQL提供的函数PIVOT可以实现行转列的问题,不过为了实现向下的兼容,我使用case when实现:

select
  dept.DeptName as deptname,
  usr.realName as realname,
  rol.RoleName as rolename,
  usr.userCode as usercode,
  
  sum(case check1.YearDescr when ‘2014上‘ then check1.ManagerScore else 0 end) as ‘2014上‘,
  sum(case check1.YearDescr when ‘2014下‘ then check1.ManagerScore else 0 end) as ‘2014下‘
 from T_Department dept
 left join T_Roles rol on dept.DeptID=rol.DeptID
 left join T_UserRole usrRol on usrRol.RoleID=rol.RoleID
 left join T_Users usr on usr.userId=usrRol.UserID
 left join HR_PersonalGoal check1 on check1.Creator=usr.userId
 where usr.userId =43
 group by dept.LineSort,deptname,usr.realname,rolename,usr.usercode
 order by dept.LineSort

bubuko.com,布布扣

SQL行转列,布布扣,bubuko.com

SQL行转列

标签:des   style   blog   code   width   http   

原文地址:http://www.cnblogs.com/jsping/p/3715588.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!