• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > 浅析SQL语句行列转换的两种方法 case...when与pivot函数的应用

浅析SQL语句行列转换的两种方法 case...when与pivot函数的应用

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了sql pivot,sql pivot用法,sql server pivot,sql中pivot,sql2008 pivot等相关知识,希望本文的分享对您有所帮助

/*创建数据库*/
 CREATE DATABASE tmp
 go
 USE tmp
 go

/*创建数据库测试表*/
CREATE TABLE [Scores]
     (
       [ID] INT IDENTITY(1, 1)
                PRIMARY KEY ,
       [Student] VARCHAR(20) ,
       [Subject] VARCHAR(30) ,
       [Score] FLOAT
     )

go

TRUNCATE TABLE Scores
 /*插入数据库测试数据信息*/
  INSERT  INTO Scores
         ( Student, Subject, Score )
 VALUES  ( 'test001', '语文', '90' )
 INSERT  INTO Scores
         ( Student, Subject, Score )
 VALUES  ( 'test001', '英语', '85' )
 INSERT  INTO Scores
         ( Student, Subject, Score )
 VALUES  ( 'text002', '语文', '90' )
 INSERT  INTO Scores
         ( Student, Subject, Score )
 VALUES  ( 'text002', '英语', '80' )
 INSERT  INTO Scores
         ( Student, Subject, Score )
 VALUES  ( 'test003', '语文', '95' )
 INSERT  INTO Scores
         ( Student, Subject, Score )
 VALUES  ( 'test003', '英语', '85' )

/*1.  case when .......then else  ....end 用法,行列转换*/
 SELECT  Student AS '姓名' ,
         MAX(CASE Subject
               WHEN '语文' THEN Score
               ELSE 0
             END) AS '语文' ,--如果这个行是“语文”,就选此行作为列
        MAX(CASE Subject
               WHEN '英语' THEN Score
               ELSE 0
             END) AS '英语'
FROM    Scores
 GROUP BY Student
 ORDER BY Student

/*2. pivot(聚合函数(要转成列值的列名)
       for 要转换的列
       in(目标列名)
   )*/

SELECT  Student AS '姓名' ,
         AVG(语文) AS '语文' ,
         AVG(英语) AS '英语'
FROM    Scores PIVOT( AVG(Score) FOR Subject IN ( 语文, 英语 ) )as NewScores
 GROUP BY Student
 ORDER BY Student ASC

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

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

  • 浅析SQL语句行列转换的两种方法 case...when与pivot函数的应用

相关文章

  • 2018-12-05mysql全文搜索 sql命令的写法
  • 2018-12-05分享一篇mysql优化的实例
  • 2018-12-05MySQL 不允许从远程访问的解决方法
  • 2018-12-05PDO概述特点及安装
  • 2017-05-11如何恢复Mysql数据库的详细介绍
  • 2018-12-05pl/sql对采用数字格式的日期进行日期的转换
  • 2018-12-05JDBC如何连接MySQL数据库?
  • 2017-05-11简单分析MySQL中的primary key功能
  • 2018-12-05Sql Server查询性能优化之不可小觑的书签查找介绍
  • 2018-12-05MYSQL解锁和锁表的实例详解

文章分类

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

最近更新的内容

    • MySQL 数据库两台主机同步实战(linux)
    • MySQL数据库varchar的限制规则说明
    • SQL Server 7.0 入门(七)
    • 如何 在Access中选择指定日期前的记录?
    • MySQL: mysql is not running but lock exists 的解决方法
    • 通过SQL语句来备份,还原数据库
    • SQL数据操作基础(中级)9
    • Mysql5.5&Mysql5.6&Mysql5.7特性
    • mysql合并多条记录的单个字段去一条记录编辑
    • mysql多表连接查询操作实例

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

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