文章目录

  • 一、表结构
  • 二、竖表转横表
    • 1-1 case when then
    • 1-2 pivot
  • 三、横表转竖表
    • 1-1 UNION ALL
    • 1-2 unpivot

最近笔试中有 【将竖表转换为横表】的题 ,记录一下横竖表转换的SQL语句~

一、表结构

竖表结构

create table Table_A
(姓名 varchar(20),课程 varchar(20),成绩 int
)
insert into Table_A(姓名,课程,成绩) values('张三','语文',60)
insert into Table_A(姓名,课程,成绩) values('张三','数学',70)
insert into Table_A(姓名,课程,成绩) values('张三','英语',80)
insert into Table_A(姓名,课程,成绩) values('李四','语文',90)
insert into Table_A(姓名,课程,成绩) values('李四','数学',100)


横表结构

create table Table_B
(姓名 varchar(20),语文 int,数学 int,英语 int
)
insert into Table_B(姓名,语文,数学,英语) values('张三',60,70,80)
insert into Table_B(姓名,语文,数学,英语) values('李四',90,100,0)

二、竖表转横表

Table_A --> Table_B

1-1 case when then

select
[姓名],
sum(case [课程] when '语文' then [成绩]  end) as [语文],
sum(case [课程] when '数学' then [成绩]  end) as [数学],
sum(case [课程] when '英语' then [成绩]  end) as [英语]
from [Table_A]
group by [姓名]

1-2 pivot

select * from [Table_A]
pivot(max([成绩])for [课程]in ([语文],[数学],[英语])
) as 临时表

执行结果

三、横表转竖表

Table_B --> Table_A

1-1 UNION ALL

select [姓名],'语文'as 课程,语文 as [成绩] from [Table_B] union all
select [姓名],'数学'as 课程,数学 as [成绩] from [Table_B] union all
select [姓名],'英语'as 课程,英语 as [成绩] from [Table_B]
order by [姓名],[课程]

1-2 unpivot

select [姓名],[课程],[成绩] from [Table_B]
unpivot
([成绩] for [课程] in([语文],[数学],[英语])
) as 临时表
order by [姓名],[课程]

执行结果:

笔试 -- SQL语句之横竖表转换相关推荐

  1. oracle创建表语句_利用FME去拼接SQL语句并创建表

    在之前的工作中,我遇到了这么一个需求,需要将数据库内一千多个旧表按其原来表结构,重新创建对应的新表.然后对旧数据的进行处理后,存储新的数据. 不只是结构需要保持一致,还有用户.表空间.约束.备注等也需 ...

  2. 写出一条Sql语句,取出表A中的第31条到第40条记录。表A以自动增长的ID作为主键。(注意:ID可能不是连续的)

    写出一条Sql语句,取出表A中的第31条到第40条记录.表A以自动增长的ID作为主键.(注意:ID可能不是连续的).笔试的时候经常会出现这道题,网上的答案也是龙鱼混杂,今天自己实践了一下,找出了正确的 ...

  3. mysql查询主键sql语句_MySQL数据库-表操作-SQL语句(一)

    1. 数据库操作与存储引擎 1.1   数据库和数据库对象 数据库对象:存储,管理和使用数据的不同结构形式,如:表.视图.存储过程.函数.触发器.事件等. 数据库:存储数据库对象的容器. 数据库分两种 ...

  4. sql语句语法多表关联_SQL Delete语句-如何删除行或表,语法示例

    sql语句语法多表关联 To delete a record in a table you use the  DELETE  statement. 要删除表中的记录,请使用DELETE语句. Be c ...

  5. oracle修改表结构的sql命令是什么,sql语句中修改表结构的命令是什么?

    sql语句中修改表结构的命令是:"ALTER TABLE"命令. ALTER TABLE 语句用于在已有的表中添加.删除或修改列. SQL ALTER TABLE 语法 如需在表中 ...

  6. 导入数据的sql语句,两表互导

    导入数据的sql语句,两表互导 insert into Product(C_ID,Pname,Ptitle,Ptype,IsProduct,onLine,FisrtSort,SecSort,Sort, ...

  7. MySQL删除s表命令_SQLServer数据库sql语句中----删除表数据drop、truncate和delete的用法...

    本文主要向大家介绍了SQLServer数据库sql语句中----删除表数据drop.truncate和delete的用法,通过具体的内容向大家展现,希望对大家学习SQLServer数据库有所帮助. 虽 ...

  8. html 数据库 编写学生表,用sql语句创建学生表如何做

    在数据库中使用SQL语句创建学生表代码如下:( 学号 char(12) primary key, 姓名 char(6) not null, 性别 char(2) check(性别 IN ('男','女 ...

  9. oracle维护常用SQL语句(查看系统表和视图)

    转:http://www.360doc.com/content/11/1230/15/7489308_176090474.shtml oracle维护常用SQL语句(查看系统表和视图) 1.查看表空间 ...

最新文章

  1. Android 仿微信朋友圈添加图片
  2. 设计模式C++实现(4)——桥接模式
  3. Centos7 安装OpenTSDB
  4. iOS学习笔记-地图MapKit入门
  5. 如何在从事前端两年,得到20+K的offer
  6. Element-UI安装和项目开发
  7. Chapter7:非线性控制系统分析
  8. exoplayer和mediaplayer的封装
  9. Android安卓手机版Kindle字体修改
  10. Android系统优化的那些年那些事
  11. 博途V15.1激活工具出错。
  12. 工作积累10——推荐一本看过最好的数据分析的书
  13. 解决远程桌面背景变黑的问题
  14. [日语二级词汇]日语二级必会汉字总结10
  15. GWAS计算BLUE值2--LMM计算BLUE值
  16. 使用Portia时docker-compose失败 /bin/sh: 1: /app/provision.sh: Permission denied
  17. 11 系统建模语言SysML实例——蒸馏器
  18. 电脑重启后自带键盘失灵而外接键盘有用的一种情况
  19. CSS入门(CSS常用属性----字体、对齐方式、display属性、浮动)
  20. PHP笔记 17 18 19 20 21

热门文章

  1. VM远程连接计算机,VMware虚拟机远程连接管理教程
  2. Zabbix5.0 客户端(agent)配置异常记录
  3. 竹间智能好吗?以认知转型,提升客户洞察能力
  4. 怎么做邮件营销?邮件营销必备攻略
  5. ThreadPool 线程池
  6. 【无人机】全球无人机产业重构 中国有望“独领风骚”
  7. 全国计算机等级考试二级C语言知识点大全
  8. 计算一组数据平均值、最大值、最小值 (12 分)
  9. 树莓派3B+ 串口使用大全(实现串口通信功能)
  10. win10+ubuntu双系统,重装win10后修复ubuntu引导的方法