sql server行转列的一种实现方法

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介:   对于有些业务来说,数据在表中的存储和其最终的表现恰好相当于把源表倒转,那么这个时候我们就碰到了如何把行转化为列的问题,为了简化问题,我们且看如下查询出来的数据,您不必关心表的设计以及sql语句:   源表如下:(表名为info)        -----------------...

  对于有些业务来说,数据在表中的存储和其最终的表现恰好相当于把源表倒转,那么这个时候我们就碰到了如何把行转化为列的问题,为了简化问题,我们且看如下查询出来的数据,您不必关心表的设计以及sql语句:

  源表如下:(表名为info)

     img_cd790721ecf69f7d61c9d688478447d1.jpg

 

------------------------------------------------------------------------

  select username,   

     语文=(case course when '语文' then grade else 0 end),   

     数学=(case course when '数学' then grade else 0 end),    

      政治=(case course when '政治' then grade else 0 end

  from info

  看看我们的执行结果:

  img_c1a1603927c93a1ae6018d825e712d70.jpg

 看到这后,我们都知道应该做什么了,进行分组,按姓名进行分组,并且对三门课程分别求和;

------------------------------------------------------------------------ 

  目标结果:

      img_6b2de647e8fd1b294938fc225d42f509.jpg

 

  SQL语句为:  

select username,
   语文=sum(case course when '语文' then grade else 0 end),
   数学=sum(case course when '数学' then grade else 0 end),
   政治=sum(case course when '政治' then grade else 0 end)
from info group by username

    select username,   

         语文=sum(case course when '语文' then grade else 0 end),  

         数学=sum(case course when '数学' then grade else 0 end),   

        政治=sum(case course when '政治' then grade else 0 end)

    from info

    group by username

 

 

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
SQL
SQL Server SQL函数
SQL Server SQL函数
96 0