• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > sqlserver中查询横表变竖表的sql语句简析

sqlserver中查询横表变竖表的sql语句简析

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了横表,竖表等相关知识,希望本文的分享对您有所帮助

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

这是我工作遇到过得情况,总结下来。如果有遇到这种情况的话可以参考下。

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Oracle 数据显示 横表转纵表
  • sqlserver中查询横表变竖表的sql语句简析

相关文章

  • 2017-05-11asp+mysql+utf8 网页出现乱码问题的解决方法
  • 2018-12-05oracle impdp network_link参数使用介绍
  • 2018-12-05详细介绍Ubuntu下Mysql常用指令及中文乱码问题
  • 2018-12-05SQL Server SQL高级查询语句小结
  • 2018-12-05如何在Linux下安装和配置PHPmyadmin?
  • 2018-12-05Windows下简单的Mysql备份BAT脚本代码分享
  • 2018-12-05SQL Server 7.0 入门(六)
  • 2017-05-11MySQL Index Condition Pushdown(ICP)性能优化方法实例
  • 2018-12-05MongoDB提升性能的方法总结
  • 2018-12-05SQL实现交叉表的方法

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • mssql server 数据库附加不上解决办法分享
    • 总结MySQL导出数据的实例教程
    • mysql使用教程之分区表的使用方法(删除分区表)
    • MySQL的安全问题从安装开始说起
    • 解析MySQL高速缓存启动方法及参数(query_cache_size)
    • MySQL 性能优化的最佳20多条经验分享
    • mysql数据库管理员密码忘记如何解决
    • 使用navicat 8实现创建数据库和导入数据 管理用户与权限[图文方法]
    • mysql表的清空、删除和修改操作详解
    • SQL2008中SQL应用之- 死锁(Deadlocking)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有