SQL 查询横表变竖表
主表
人名表
按照常规查询
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 查询横表变竖表相关推荐
- hive 宽表变竖表 长表变宽表
1.这是源数据以及需要转化的目标表. 我们的方法是 , 用 GROUP BY按照year分组 , 并且依次提取1月,2月,3月,4月的 num,具体实现 1 2 3 4 5 6 select year ...
- mysql数据横表变成竖表_MySQL中横表和竖表相互转换
一 竖表转横表 1. 首先创建竖表 create table student ( id varchar(32) primary key, name varchar (50) not null, su ...
- SQL查询数据并插入新表
SQL查询数据并插入新表 --如果接受数据导入的表已经存在 insert into 表 select * from tablename--如果导入数据并生成表 select * into 表 from ...
- 编写一个 SQL 查询,来删除 Person表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个。
题目 编写一个 SQL 查询,来删除 Person表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小的那个. Id Email 1 john@example.com 2 bob@example.c ...
- 编写一个 SQL 查询,来删除 Person表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个。
题目 编写一个 SQL 查询,来删除 Person表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个. +----+------------------+ | Id | Email | + ...
- python长表转换宽表_pandas使用之宽表变窄表的实现
我就废话不多说了,还是直接看代码吧! import pandas as pd # 伪造一些数据 fake_data = {'subject':['math', 'english'], 'A': [88 ...
- python 查询sqlserver 视图_在Python中,将SQL查询的输出显示为表,就像在SQL中一样...
这似乎是一个基本的函数,但我对Python还不熟悉,所以也许我没有正确地搜索这个函数. 在Microsoft SQL Server中,当SELECT top 100 * FROM dbo.Patien ...
- SQL查询语句(从单表到多表、从简单到复杂)
数据库sql语句及字段名不区分大小写,值必须一一对应 1.创建三张表,学生表.选课表.成绩表 CREATE TABLE student(Sno varchar(20) NOT NULL,Sname v ...
- oracle查询表字段横向排序,sql 查询 - 横着走的螃蟹 - OSCHINA - 中文开源技术交流社区...
查询原则:列看成变量,where后面看成表达式 1.常用函数: max求最大,select max(shop_price) from goods; min求最小 sum求总和,select sum(g ...
最新文章
- Transition 实现轮播图
- arcgis api for javascript创建webmap
- Android studio之导入新库提示Add library ‘Gradle*****@aar‘ to classpath
- java script this_JavaScript this 关键字
- Spring Boot(7)---构建系统和依赖管理
- mysql8 win10_window10下安装多个MySQL8.0
- 利用QDataStream将大文件转化成二进制文件QBatyArray
- Windows用户密码基础知识
- *第七周*数据结构实践项目二【建设链式队列算法库】
- DDraw笔记-创建表面
- 工业级Pass云平台SpringCloudAlibaba综合项目实战(一):序言
- Linux 配置vim
- 笔记本ubuntu,deepin,linux系统共享WIFI
- 2022美团校招技术岗笔试全部AC_Code分享
- 自建CA并签名server证书实现https
- ArcGIS Server manger管理页面无法打开问题解决
- pyqt5动态设置字体大小
- 微信中无法直接下载秒借类金融贷款APP的解决方案
- python--城堡保卫战
- win10+cuda10.0+pytorch安装
热门文章
- 前端学习(3310):redux的state hook对象
- Leetcode刷题(6)有效的括号
- react(93)--成功置空
- 前端学习(3004):vue+element今日头条管理--使用form表单
- [html] 说说video标签中预加载视频用到的属性是什么?
- [html] 你了解什么是无障碍web(WAI)吗?在开发过程中要怎么做呢
- 前端学习(2467):在前端页面中引入百度地图
- 前端学习(2367):两种方式导航跳转和传参
- 前端学习(2244)vue值造轮子之用户分析
- 前端学习(1929)vue之电商管理系统电商系统之美化一层循环的UI结构for循环ui美化点击删除按钮弹出对话框