首先是三张表, CNo对应的是课程,在这里我就粘贴了。

主表

人名表

按照常规查询

SELECT s.SName, c.CName,s2.SCgrade

FROM S s INNER JOIN SC s2 ON s2.SNo = s.SNo INNER JOIN C c ON c.CNo = s2.CNo

那么结果是这样的

但是这是横表 不是我想看到的结果。

我们要看到这样的结果:

那么怎么办呢?

第一种写法:SELECT w.SName,

sum(case when  w.CNo= 1 then w.SCgrade   ELSE 0 END) AS '语文',

sum(case  WHEN w.CNo =2 THEN  w.SCgrade  ELSE   0 END) AS '数学',

sum(case when  w.CNo= 3 then w.SCgrade  ELSE  0 END) AS '英语'

FROM

(SELECT s.SNo,s.SName, s2.CNo, s2.SCgrade  FROM s s INNER JOIN SC s2 ON s2.SNo = s.SNo WHERE s.SNo IN (SELECT c.SNo  FROM sc c GROUP BY c.SNo ))

AS w GROUP BY w.SName

第二种写法: SELECT s.SName,

sum(case when  s2.CNo= 1 then s2.SCgrade   ELSE 0 END) AS '语文',

sum(case  WHEN s2.CNo =2 THEN  s2.SCgrade  ELSE   0 END) AS '数学',

sum(case when  s2.CNo= 3 then s2.SCgrade  ELSE  0 END) AS '英语'

FROM

S s INNER JOIN SC s2 ON s2.SNo = s.SNo

INNER JOIN C c ON c.CNo = s2.CNo

GROUP BY s.SNo,

s.SName

转载于:https://www.cnblogs.com/kgdxpr/archive/2012/05/02/2479472.html

SQL 查询横表变竖表相关推荐

  1. hive 宽表变竖表 长表变宽表

    1.这是源数据以及需要转化的目标表. 我们的方法是 , 用 GROUP BY按照year分组 , 并且依次提取1月,2月,3月,4月的 num,具体实现 1 2 3 4 5 6 select year ...

  2. mysql数据横表变成竖表_MySQL中横表和竖表相互转换

    一  竖表转横表 1. 首先创建竖表 create table student ( id varchar(32) primary key, name varchar (50) not null, su ...

  3. SQL查询数据并插入新表

    SQL查询数据并插入新表 --如果接受数据导入的表已经存在 insert into 表 select * from tablename--如果导入数据并生成表 select * into 表 from ...

  4. 编写一个 SQL 查询,来删除 Person表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个。

    题目 编写一个 SQL 查询,来删除 Person表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小的那个. Id Email 1 john@example.com 2 bob@example.c ...

  5. 编写一个 SQL 查询,来删除 Person表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个。

    题目 编写一个 SQL 查询,来删除 Person表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个. +----+------------------+ | Id | Email | + ...

  6. python长表转换宽表_pandas使用之宽表变窄表的实现

    我就废话不多说了,还是直接看代码吧! import pandas as pd # 伪造一些数据 fake_data = {'subject':['math', 'english'], 'A': [88 ...

  7. python 查询sqlserver 视图_在Python中,将SQL查询的输出显示为表,就像在SQL中一样...

    这似乎是一个基本的函数,但我对Python还不熟悉,所以也许我没有正确地搜索这个函数. 在Microsoft SQL Server中,当SELECT top 100 * FROM dbo.Patien ...

  8. SQL查询语句(从单表到多表、从简单到复杂)

    数据库sql语句及字段名不区分大小写,值必须一一对应 1.创建三张表,学生表.选课表.成绩表 CREATE TABLE student(Sno varchar(20) NOT NULL,Sname v ...

  9. oracle查询表字段横向排序,sql 查询 - 横着走的螃蟹 - OSCHINA - 中文开源技术交流社区...

    查询原则:列看成变量,where后面看成表达式 1.常用函数: max求最大,select max(shop_price) from goods; min求最小 sum求总和,select sum(g ...

最新文章

  1. Transition 实现轮播图
  2. arcgis api for javascript创建webmap
  3. Android studio之导入新库提示Add library ‘Gradle*****@aar‘ to classpath
  4. java script this_JavaScript this 关键字
  5. Spring Boot(7)---构建系统和依赖管理
  6. mysql8 win10_window10下安装多个MySQL8.0
  7. 利用QDataStream将大文件转化成二进制文件QBatyArray
  8. Windows用户密码基础知识
  9. *第七周*数据结构实践项目二【建设链式队列算法库】
  10. DDraw笔记-创建表面
  11. 工业级Pass云平台SpringCloudAlibaba综合项目实战(一):序言
  12. Linux 配置vim
  13. 笔记本ubuntu,deepin,linux系统共享WIFI
  14. 2022美团校招技术岗笔试全部AC_Code分享
  15. 自建CA并签名server证书实现https
  16. ArcGIS Server manger管理页面无法打开问题解决
  17. pyqt5动态设置字体大小
  18. 微信中无法直接下载秒借类金融贷款APP的解决方案
  19. python--城堡保卫战
  20. win10+cuda10.0+pytorch安装

热门文章

  1. 前端学习(3310):redux的state hook对象
  2. Leetcode刷题(6)有效的括号
  3. react(93)--成功置空
  4. 前端学习(3004):vue+element今日头条管理--使用form表单
  5. [html] 说说video标签中预加载视频用到的属性是什么?
  6. [html] 你了解什么是无障碍web(WAI)吗?在开发过程中要怎么做呢
  7. 前端学习(2467):在前端页面中引入百度地图
  8. 前端学习(2367):两种方式导航跳转和传参
  9. 前端学习(2244)vue值造轮子之用户分析
  10. 前端学习(1929)vue之电商管理系统电商系统之美化一层循环的UI结构for循环ui美化点击删除按钮弹出对话框