马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

表的透视变换

[复制链接]
查看2252 | 回复0 | 2019-12-26 09:05:59 | 显示全部楼层 |阅读模式

将表的行列倒置体现(透视变动)

091025m6144dg3uz344zvr.png

1)、创建数据表并添加数据

  1. create table Score
  2. (
  3. 学号 nvarchar(10)
  4. ,课程 nvarchar(10)
  5. ,效果 nvarchar(10)
  6. );
  7. insert into Score(学号,课程,效果)values('0001','语文',87),('0001','数学',79),('0001','英语',95)
  8. ,('0002','语文',69),('0002','数学',84);
复制代码

2)、先查询观察整张表的布局

  1. select * from Score;
复制代码

091026pknqxkn0ll0nhwb0.png

3)、先体现要展示的根本的布局

  1. select 学号,'语文','数学','英语' from Score;
复制代码

091026h1e1anxbb3fj3vxe.png

4)、利用case语句,假如课程=语文 则直接体现语文效果,否则体现0,其他科目同

  1. select 学号
  2. ,case when 课程='语文' then 效果 else 0 end as'语文'
  3. ,case when 课程='数学' then 效果 else 0 end as'数学'
  4. ,case when 课程='英语' then 效果 else 0 end as'英语'
  5. from Score;
复制代码

091026b7jkf52cpgcdf8n9.png

5)、从5行变2行,利用分组聚合(按学号分组,各科分组聚合)

  1. select 学号
  2. ,sum(case when 课程='语文' then 效果 else 0 end) as'语文'
  3. ,sum(case when 课程='数学' then 效果 else 0 end) as'数学'
  4. ,sum(case when 课程='英语' then 效果 else 0 end) as'英语'
  5. from Score group by 学号;
复制代码

091027izmffretjmjz8aes.png

C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则