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

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

淺析SQL語句行列轉(zhuǎn)換的兩種方法 case...when與pivot函數(shù)的應(yīng)用

2024-07-24 13:04:51
字體:
供稿:網(wǎng)友

/*創(chuàng)建數(shù)據(jù)庫*/
 CREATE DATABASE tmp
 go
 USE tmp
 go

/*創(chuàng)建數(shù)據(jù)庫測試表*/
CREATE TABLE [Scores]
     (
       [ID] INT IDENTITY(1, 1)
                PRIMARY KEY ,
       [Student] VARCHAR(20) ,
       [Subject] VARCHAR(30) ,
       [Score] FLOAT
     )

go

TRUNCATE TABLE Scores
 /*插入數(shù)據(jù)庫測試數(shù)據(jù)信息*/
  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 用法,行列轉(zhuǎn)換*/
 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(聚合函數(shù)(要轉(zhuǎn)成列值的列名)
       for 要轉(zhuǎn)換的列
       in(目標(biāo)列名)
   )*/

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 昭苏县| 沈丘县| 丰都县| 阿合奇县| 洛南县| 许昌市| 平舆县| 迁安市| 交口县| 临泉县| 安阳市| 龙江县| 治多县| 二手房| 海伦市| 二连浩特市| 东台市| 惠来县| 徐汇区| 长治县| 息烽县| 金溪县| 石嘴山市| 德钦县| 宣城市| 离岛区| 海阳市| 博白县| 五家渠市| 饶阳县| 长子县| 广河县| 莒南县| 临颍县| 塘沽区| 临澧县| 华池县| 威宁| 桂平市| 娄底市| 中卫市|