文档章节

mysql 横表和纵表转换

大喵哥
 大喵哥
发布于 2013/12/13 17:06
字数 421
阅读 314
收藏 3

(1)表tb1有如下数据:

姓名                     语文                        数学                    物理

张三                       68                           89                        99

李四                      90                            66                         78

现在要求写出查询语句得到如下查询结果

name                    subject                       score

张三                       语文                           68
张三                       数学                           89
张三                       物理                            99
李四                       语文                            90
李四                      数学                            66
李四                       物理                            78

sql语句如下:

select 姓名 as name,'语文' as subject,语文 as score from tb1
union
select 姓名 as name,'数学' as subject,数学 as score from tb1
union
select 姓名 as name,'物理' as subject,物理 as score from tb1
order by name



或者:

select * from(
select 姓名 as name,'语文' as subject,语文 as score from tb1
union
select 姓名 as name,'数学' as subject,数学 as score from tb1
union
select 姓名 as name,'物理' as subject,物理 as score from tb1
)tb
order by name



(2)tb2表有如下数据:

name              subject                  score

张三               语文                       74
张三                英语                      88
张三                物理                       90
李四                语文                      88
李四                英语                      67
李四                物理                        95

通过查询得到如下数据:

姓名         语文                  英语                     物理

张三          74                   88                        90
李四           88                    67                        95

sql语句如下:

select name as '姓名',
max(case subject when '语文' then score else 0 end) 语文,
        max(case subject when '英语' then score else 0 end) 英语,
        max(case subject when '物理' then score else 0 end)物理
from tb2
group by name



现在要求写出查询语句得到如下结果:

姓名         语文                  英语                     物理            总分                平均分

张三          74                    88                        90               252                    84
李四           88                    67                        95                250                    83.33

sql:

select name '姓名',
max(case subject when '语文' then result else 0 end) 语文,
max(case subject when '物理' then result else 0 end) 物理,
max(case subject when '英语' then result else 0 end)英语,
sum(result) as 总分,
avg(result) as 平均分
from tb
group by name



本文转载自:http://hi.baidu.com/devife/item/a56dac30f0977cd16d15e911

大喵哥
粉丝 13
博文 33
码字总数 1912
作品 0
广州
程序员
私信 提问
mysql横表和纵表以及互转实例

一.纵表 相关建表语句: CREATE TABLE ( int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id', varchar(50) DEFAULT NULL COMMENT '姓名', varchar(50) DEFAULT NULL COMMENT '科目', double......

谢思华
2016/04/06
2.4K
0
Oracle 横表/纵表用场以及它们之间的相互转换

一、横表和纵表 横表:通常指我们平时在数据库中建立的表,是一种普通的建表方式。 (主键、字段1、字段2......)如:时间、客户ID,基本通话费、漫游通话费,国内长途费、国际长途费....。 ...

指尖的舞者
2012/08/05
224
0
数据库表为纵表时转变为横表的设计方法

一. 横表&纵表: 数据库表按照存储的数据结构不同区分为横表与纵表,通过如下数据的存储我们分别对横表与纵表进行简单介绍: 横表: http://www.finereport.com/forumimages/zjkbwzbszbwhb1...

finereport
2011/11/24
718
0
基于ESB实现商友与K3财务凭证集成

背景 沈阳XX商场推行O2O营销模式,信息化系统包括:线下零售系统、线上电商系统、网上支付系统,财务核算系统,为了实现线上线下系统互动、财务核算一体化,需要对各系统进行数据集成、系统对...

数通畅联
2014/12/10
255
0
数据库设计如何实现属性可配置化

http://www.iteye.com/problems/59252 比如有个Book表,有id, name, isbn等列表示基本信息,但是不同的商家对Book表有不同的其他需求,有的还需要A属性,有的则还需要B属性,或者说某一天随着...

长生门主
2017/06/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Boot + Mybatis-Plus 集成与使用(二)

前言: 本章节介绍MyBatis-Puls的CRUD使用。在开始之前,先简单讲解下上章节关于Spring Boot是如何自动配置MyBatis-Plus。 一、自动配置 当Spring Boot应用从主方法main()启动后,首先加载S...

伴学编程
昨天
7
0
用最通俗的方法讲spring [一] ──── AOP

@[TOC](用最通俗的方法讲spring [一] ──── AOP) 写这个系列的目的(可以跳过不看) 自己写这个系列的目的,是因为自己是个比较笨的人,我曾一度怀疑自己的智商不适合干编程这个行业.因为在我...

小贼贼子
昨天
7
0
Flutter系列之在 macOS 上安装和配置 Flutter 开发环境

本文为Flutter开发环境在macOS下安装全过程: 一、系统配置要求 想要安装并运行 Flutter,你的开发环境需要最低满足以下要求: 操作系统:macOS(64位) 磁盘空间:700 MB(不包含 IDE 或其余...

過愙
昨天
6
0
OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
昨天
2.7K
16
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
昨天
42
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部