笔试 -- SQL语句之横竖表转换
文章目录
- 一、表结构
- 二、竖表转横表
- 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语句之横竖表转换相关推荐
- oracle创建表语句_利用FME去拼接SQL语句并创建表
在之前的工作中,我遇到了这么一个需求,需要将数据库内一千多个旧表按其原来表结构,重新创建对应的新表.然后对旧数据的进行处理后,存储新的数据. 不只是结构需要保持一致,还有用户.表空间.约束.备注等也需 ...
- 写出一条Sql语句,取出表A中的第31条到第40条记录。表A以自动增长的ID作为主键。(注意:ID可能不是连续的)
写出一条Sql语句,取出表A中的第31条到第40条记录.表A以自动增长的ID作为主键.(注意:ID可能不是连续的).笔试的时候经常会出现这道题,网上的答案也是龙鱼混杂,今天自己实践了一下,找出了正确的 ...
- mysql查询主键sql语句_MySQL数据库-表操作-SQL语句(一)
1. 数据库操作与存储引擎 1.1 数据库和数据库对象 数据库对象:存储,管理和使用数据的不同结构形式,如:表.视图.存储过程.函数.触发器.事件等. 数据库:存储数据库对象的容器. 数据库分两种 ...
- sql语句语法多表关联_SQL Delete语句-如何删除行或表,语法示例
sql语句语法多表关联 To delete a record in a table you use the DELETE statement. 要删除表中的记录,请使用DELETE语句. Be c ...
- oracle修改表结构的sql命令是什么,sql语句中修改表结构的命令是什么?
sql语句中修改表结构的命令是:"ALTER TABLE"命令. ALTER TABLE 语句用于在已有的表中添加.删除或修改列. SQL ALTER TABLE 语法 如需在表中 ...
- 导入数据的sql语句,两表互导
导入数据的sql语句,两表互导 insert into Product(C_ID,Pname,Ptitle,Ptype,IsProduct,onLine,FisrtSort,SecSort,Sort, ...
- MySQL删除s表命令_SQLServer数据库sql语句中----删除表数据drop、truncate和delete的用法...
本文主要向大家介绍了SQLServer数据库sql语句中----删除表数据drop.truncate和delete的用法,通过具体的内容向大家展现,希望对大家学习SQLServer数据库有所帮助. 虽 ...
- html 数据库 编写学生表,用sql语句创建学生表如何做
在数据库中使用SQL语句创建学生表代码如下:( 学号 char(12) primary key, 姓名 char(6) not null, 性别 char(2) check(性别 IN ('男','女 ...
- oracle维护常用SQL语句(查看系统表和视图)
转:http://www.360doc.com/content/11/1230/15/7489308_176090474.shtml oracle维护常用SQL语句(查看系统表和视图) 1.查看表空间 ...
最新文章
- html文本框填充颜色逐渐减少,web前端面试题之htmlcss篇
- 文巾解题1588. 所有奇数长度子数组的和
- 八十六、推荐组件的redux-thunk异步解决方案、Ajax获取推荐数据
- Django框架深入了解_03(DRF之认证组件、权限组件、频率组件、token)
- laravel8找不到控制器_找一个“靠谱儿”的烟雾探测器方案,难不难?
- OpenCV3学习(12.4) 粒子滤波Condensation算法
- linux网络系统调用,Linux网络系统调用接口--待续
- TensorFlow版本的HelloWord
- zookeeper的acl权限控制_zookeeper权限acl与四字命令
- Oracle 11g服务器安装详细步骤——图文教程
- python 克里金空间插值_空间插值——克里金插值
- 为什么要参加hadoop培训
- 闲置手机不要换锅换盆,你会后悔的
- SAP HANA XS ODATA的写法
- 互联网平台如何快速搭建内容安全审核系统?
- 【2017年中总结】——半饱
- iOS如何让APP删除后不接受APNS推送消息
- 如何用计算机将图片整成手绘画,【新手教程】如何将手绘作品转变成电子档,并让其更像“作品”?...
- 统计学中的真阳性(TP),假阴性(FN),假阳性(FP),真阴性(TN)怎么理解?
- 冬青看世界:“银河战舰“它叕来了,鲤鱼又将跃龙门?
热门文章
- 爷青回!还记得第一次敲出SQL代码是什么吗?
- 解决mybatis java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed
- ActiveMQ之【Connection refused: no further information】异常解决
- ruduce用起来原来这么爽
- 如何快速学习新的知识
- Linux设备驱动中的阻塞和非阻塞IO
- 常见的交换设备(中继器、集线器hub、网桥bridge、交换机switch)|计算机网络
- Harbor仓库搭建及简单使用
- 华为云服务-运维篇-负载均衡介绍与平台算法使用
- ESP8266 软窜口控制 红外模块发射 遥控电视电视