sqlserver中查询横表变竖表的sql语句简析
首先是三张表, 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
这是我工作遇到过得情况,总结下来。如果有遇到这种情况的话可以参考下。
相关推荐
-
SQL Server纵表与横表相互转换的方法
1,纵表转横表 纵表结构 Table_A: 转换后的结构: 纵表转横表的SQL示例: SELECT Name , SUM(CASE WHEN Course = N'语文' THEN Grade ELSE 0 END) AS Chinese , SUM(CASE WHEN Course = N'数学' THEN Grade ELSE 0 END) AS Mathematics , SUM(CASE WHEN Course = N'英语' THEN Grade ELSE 0 END) AS Engl
-
sqlserver中查询横表变竖表的sql语句简析
首先是三张表, 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(
-
pandas使用之宽表变窄表的实现
我就废话不多说了,还是直接看代码吧! import pandas as pd # 伪造一些数据 fake_data = {'subject':['math', 'english'], 'A': [88, 90], 'B': [70, 80], 'C': [60, 78]} # 宽表 test = pd.DataFrame(fake_data, columns=['subject', 'A', 'B', 'C']) test subject A B C 0 math 88 70 60 1 engl
-
PGSQL查询最近N天的数据及SQL语句实现替换字段内容
目录 1.用SQL查询最近N天的数据 2.用SQL语句实现替换字段里的内容 3.SQL将查询结果赋值 4.SQL查询字段内容为 NULL值时候赋值 总结 1.用SQL查询最近N天的数据 思路:先获取当前的时间,然后更具当前时间去减去对应的天数,就可以得到需要的天数了.然后用这些天数作为条件,然后即可查询出需要多少天的数据了. -- 获取当前时间 SELECT CURRENT_TIMESTAMP; -- 或 SELECT now(); select CURRENT_TIMESTAMP :: DAT
-
Laravel中如何轻松容易的输出完整的SQL语句
前言 laravel 中自带的查询构建方法 toSql 得到的 sql 语句并未绑定条件参数,类似于这样 select * fromuserswhereid= ? ,所以写了个扩展包 laravel-dump-sql,可以获取完整的 sql 语句. 源码 laravel-dump-sql - github.com/guanguans/l- 安装 $ composer require guanguans/laravel-dump-sql -v 发布服务 $ php artisan vendor:p
-
mysql把一个表某个字段的内容复制到另一张表的某个字段的SQL语句写法
需求:把一个表某个字段内容复制到另一张表的某个字段. 实现sql语句1: 复制代码 代码如下: UPDATE file_manager_folder f1LEFT OUTER JOIN file_manager_folder f2 ON f1.name = f2.name AND f2.parentId = 54SET f1.parentId = 54 WHERE f2.name IS NULL AND f1.id IN (1,2,3); 实现sql语句2: 复制代码 代码如下: upd
-
SQL SERVER 表与表之间 字段一对多sql语句写法
表A A1 A2 A3 A4 01 02 03 04 03 04 01 02 表B B1 B2 01 张三 02 李四 03 王五 04 赵六 显示结果 A1 A2 A3 A4 张三 李四 王五 赵六 王五 赵六 张三 李四 效果图: sql语句如下 SELECT (SELECT B2 FROM B WHERE B1=A1) AS A1, (SELECT B2 FROM B WHERE B1=A2) AS A2, (SELECT B2 FROM B WHERE B1=A3) AS A3, (SE
-
sqlserver中在指定数据库的所有表的所有列中搜索给定的值
比如:我们导入了某个客户的资料,我们知道此客户的姓名是ZhangShan,我们想知道,在我们的业务数据库(eg:NorthWind)中,有哪些数据表的哪些字段设置了此姓名值ZhangShan,通过下面的SQL,我们就可以实现此目的,此处的SQL搜索自网上,在此处做了局部修改. 一.搜索数据是String类型 适用于搜索Text,NText,Varchar,Nvarchar,Char,NChar等类型 1.创建存储过程:My_Search_StringInGivenTable 复制代码 代码如下:
-
使用SQL语句查询MySQL,SQLServer,Oracle所有数据库名和表名,字段名
MySQL中查询所有数据库名和表名 查询所有数据库 show databases; 查询指定数据库中所有表名 select table_name from information_schema.tables where table_schema='database_name' and table_type='base table'; 查询指定表中的所有字段名 select column_name from information_schema.columns where table_schema
-
使用SQL查询所有数据库名和表名问题
目录 MySQL中查询所有数据库名和表名 SQLServer中查询所有数据库名和表名 Oracle中查询所有数据库名和表名 MySQL中查询所有数据库名和表名 查询所有数据库 show databases; 查询指定数据库中所有表名 方法一. use 数据库名 show tables: 方法二. select table_name from information_schema.tables where table_schema='数据库名' and table_type='BASE TABLE
-
MySQL中查询所有数据库占用磁盘空间大小和单个库中所有表的大小的sql语句
查询所有数据库占用磁盘空间大小的SQL语句: 复制代码 代码如下: select TABLE_SCHEMA, concat(truncate(sum(data_length)/1024/1024,2),' MB') as data_size,concat(truncate(sum(index_length)/1024/1024,2),'MB') as index_sizefrom information_schema.tablesgroup by TABLE_SCHEMAorder by dat
随机推荐
- VB实现禁用任务管理器的方法
- 如何让你的Lightbox支持滚轮缩放及Base64图片
- javascript正则表达式中分组详解
- 无效的过程调用或参数: Mid /inc-freehost-function/FreeHostFunction.asp 错误的原因
- 关于javascript原型的修改与重写(覆盖)差别详解
- 浅谈JS中的三种字符串连接方式及其性能比较
- JS实现求数组起始项到终止项之和的方法【基于数组扩展函数】
- Cocos2d-x人物动作类实例
- js学习阶段总结(必看篇)
- javascript中数组的冒泡排序使用示例
- 微信公众号支付(一)如何获取用户openId
- PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例
- js获取当前页的URL与window.location.href简单方法
- Linux 下dmidecode查看内存条数的命令介绍
- SQLServer 数据库中如何保持数据一致性
- Win7下安装MySQL5.7.16过程记录
- java发送heartbeat心跳包(byte转16进制)
- Iframe实现跨浏览器自适应高度解决方法
- Android百度地图poi范围搜索
- 浅谈Qt中使用CEF的几个要点(Windows下)