笔试 -- 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.查看表空间 ...
最新文章
- Android 仿微信朋友圈添加图片
- 设计模式C++实现(4)——桥接模式
- Centos7 安装OpenTSDB
- iOS学习笔记-地图MapKit入门
- 如何在从事前端两年,得到20+K的offer
- Element-UI安装和项目开发
- Chapter7:非线性控制系统分析
- exoplayer和mediaplayer的封装
- Android安卓手机版Kindle字体修改
- Android系统优化的那些年那些事
- 博途V15.1激活工具出错。
- 工作积累10——推荐一本看过最好的数据分析的书
- 解决远程桌面背景变黑的问题
- [日语二级词汇]日语二级必会汉字总结10
- GWAS计算BLUE值2--LMM计算BLUE值
- 使用Portia时docker-compose失败 /bin/sh: 1: /app/provision.sh: Permission denied
- 11 系统建模语言SysML实例——蒸馏器
- 电脑重启后自带键盘失灵而外接键盘有用的一种情况
- CSS入门(CSS常用属性----字体、对齐方式、display属性、浮动)
- PHP笔记 17 18 19 20 21
热门文章
- VM远程连接计算机,VMware虚拟机远程连接管理教程
- Zabbix5.0 客户端(agent)配置异常记录
- 竹间智能好吗?以认知转型,提升客户洞察能力
- 怎么做邮件营销?邮件营销必备攻略
- ThreadPool 线程池
- 【无人机】全球无人机产业重构 中国有望“独领风骚”
- 全国计算机等级考试二级C语言知识点大全
- 计算一组数据平均值、最大值、最小值 (12 分)
- 树莓派3B+ 串口使用大全(实现串口通信功能)
- win10+ubuntu双系统,重装win10后修复ubuntu引导的方法