加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MYSQL教程浅析SQL语句行列转换的两种方法 case...when与pivot函

发布时间:2020-12-12 00:56:34 所属栏目:MySql教程 来源:网络整理
导读:《MYSQL教程浅析SQL语句行列转换的两种方法 case...when与pivot函数的应用》要点: 本文介绍了MYSQL教程浅析SQL语句行列转换的两种方法 case...when与pivot函数的应用,希望对您有用。如果有疑问,可以联系我们。 MYSQL必读 /*创建数据库*/ ?CREATE DATABASE

《MYSQL教程浅析SQL语句行列转换的两种方法 case...when与pivot函数的应用》要点:
本文介绍了MYSQL教程浅析SQL语句行列转换的两种方法 case...when与pivot函数的应用,希望对您有用。如果有疑问,可以联系我们。

MYSQL必读/*创建数据库*/
?CREATE DATABASE tmp
?go
?USE tmp
?go

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

MYSQL必读go

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

MYSQL必读/*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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读