国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

淺析SQL語句行列轉換的兩種方法 case...when與pivot函數的應用

2024-07-24 12:48:04
字體:
來源:轉載
供稿:網友

/*創建數據庫*/
 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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平舆县| 灵丘县| 五莲县| 定南县| 仪陇县| 普洱| 锡林郭勒盟| 郴州市| 天门市| 宝山区| 新竹县| 景谷| 城固县| 泾川县| 天水市| 潼关县| 资阳市| 海伦市| 温泉县| 秭归县| 准格尔旗| 仪陇县| 巴楚县| 太湖县| 泾阳县| 喜德县| 什邡市| 富顺县| 柳州市| 翁牛特旗| 集贤县| 铁岭市| 大理市| 崇左市| 临朐县| 罗源县| 乐昌市| 长岛县| 松阳县| 嘉善县| 连云港市|