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

MYSQL教程浅析SQL语句行列转换的两种方法 case...when与pivot函数的应用,第1张

概述介绍《MYSQL教程浅析SQL语句行列转换的两种方法 case...when与pivot函数的应用》开发教程,希望对您有用。

《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

总结

以上是内存溢出为你收集整理的MYSQL教程浅析SQL语句行列转换的两种方法 case...when与pivot函数的应用全部内容,希望文章能够帮你解决MYSQL教程浅析SQL语句行列转换的两种方法 case...when与pivot函数的应用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1160985.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存