博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql 横表和纵表转换
阅读量:5906 次
发布时间:2019-06-19

本文共 1268 字,大约阅读时间需要 4 分钟。

  hot3.png

(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 tb1unionselect 姓名 as name,'数学' as subject,数学 as score from tb1unionselect 姓名 as name,'物理' as subject,物理 as score from tb1order by name

或者:

select * from(select 姓名 as name,'语文' as subject,语文 as score from tb1unionselect 姓名 as name,'数学' as subject,数学 as score from tb1unionselect 姓名 as name,'物理' as subject,物理 as score from tb1)tborder 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 tb2group 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 tbgroup by name

转载于:https://my.oschina.net/u/865478/blog/184276

你可能感兴趣的文章
ASP.NET MVC 4使用PagedList.Mvc分页
查看>>
HDOJ 2066 floyed优化算法
查看>>
window.onscroll
查看>>
开发常用动画收集
查看>>
nginx js、css多个请求合并为一个请求(concat模块)
查看>>
mybatis实战教程(mybatis in action)之五:与spring3集成
查看>>
解决浏览器Adobe Flash Player不是最新版本问题
查看>>
SQLite 约束
查看>>
Python爬虫学习——使用Cookie登录新浪微博
查看>>
linux配置网络
查看>>
vsftp 500 OOPS: cannot change directory:/home/xyp
查看>>
MVC ---- EF的安装于卸载
查看>>
WebRTC 学习之 概念总结
查看>>
Java对ad操作
查看>>
unity与android交互总结
查看>>
h5 微场景
查看>>
linux下uboot kernel操作cpu寄存器
查看>>
(转)PaperWeekly 第二十二期---Image Caption任务综述
查看>>
raspi-config Expand root partition to fill SD card 原理
查看>>
maven generating project in batch mode hang
查看>>