文章目录

  • 一、表结构
  • 二、竖表转横表
    • 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. html文本框填充颜色逐渐减少,web前端面试题之htmlcss篇
  2. 文巾解题1588. 所有奇数长度子数组的和
  3. 八十六、推荐组件的redux-thunk异步解决方案、Ajax获取推荐数据
  4. Django框架深入了解_03(DRF之认证组件、权限组件、频率组件、token)
  5. laravel8找不到控制器_找一个“靠谱儿”的烟雾探测器方案,难不难?
  6. OpenCV3学习(12.4) 粒子滤波Condensation算法
  7. linux网络系统调用,Linux网络系统调用接口--待续
  8. TensorFlow版本的HelloWord
  9. zookeeper的acl权限控制_zookeeper权限acl与四字命令
  10. Oracle 11g服务器安装详细步骤——图文教程
  11. python 克里金空间插值_空间插值——克里金插值
  12. 为什么要参加hadoop培训
  13. 闲置手机不要换锅换盆,你会后悔的
  14. SAP HANA XS ODATA的写法
  15. 互联网平台如何快速搭建内容安全审核系统?
  16. 【2017年中总结】——半饱
  17. iOS如何让APP删除后不接受APNS推送消息
  18. 如何用计算机将图片整成手绘画,【新手教程】如何将手绘作品转变成电子档,并让其更像“作品”?...
  19. 统计学中的真阳性(TP),假阴性(FN),假阳性(FP),真阴性(TN)怎么理解?
  20. 冬青看世界:“银河战舰“它叕来了,鲤鱼又将跃龙门?

热门文章

  1. 爷青回!还记得第一次敲出SQL代码是什么吗?
  2. 解决mybatis java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed
  3. ActiveMQ之【Connection refused: no further information】异常解决
  4. ruduce用起来原来这么爽
  5. 如何快速学习新的知识
  6. Linux设备驱动中的阻塞和非阻塞IO
  7. 常见的交换设备(中继器、集线器hub、网桥bridge、交换机switch)|计算机网络
  8. Harbor仓库搭建及简单使用
  9. 华为云服务-运维篇-负载均衡介绍与平台算法使用
  10. ESP8266 软窜口控制 红外模块发射 遥控电视电视