zoukankan      html  css  js  c++  java
  • SQL行转列

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

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

    可以看出来,这样数据处理的效果并不好,而从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

  • 相关阅读:
    Gitee + PicGo搭建图床 & Typora上传图片到图床
    算法思维 ---- 双指针法
    Floyd's cycle-finding algorithm
    Boyer-Moore Voting Algorithm
    youtube-dl 使用小记
    算法思维 ---- 滑动窗口
    Memo
    英语
    BZOJ 3270
    BZOJ 3196
  • 原文地址:https://www.cnblogs.com/jsping/p/3715588.html
Copyright © 2011-2022 走看看