国产探花免费观看_亚洲丰满少妇自慰呻吟_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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南充市| 奈曼旗| 陇西县| 屏东县| 乐平市| 马关县| 孟津县| 东兴市| 保康县| 广德县| 邯郸县| 江孜县| 中超| 县级市| 远安县| 红河县| 会宁县| 任丘市| 左云县| 浑源县| 同德县| 桃园县| 保靖县| 响水县| 右玉县| 项城市| 肥西县| 鄂伦春自治旗| 牡丹江市| 隆德县| 西城区| 昌乐县| 绵竹市| 南昌市| 穆棱市| 葫芦岛市| 务川| 卢氏县| 湾仔区| 威信县| 南开区|