淺析SQL語(yǔ)句行列轉(zhuǎn)換的兩種方法 case...when與pivot函數(shù)的應(yīng)用
/*創(chuàng)建數(shù)據(jù)庫(kù)*/
CREATE DATABASE tmp
go
USE tmp
go
/*創(chuàng)建數(shù)據(jù)庫(kù)測(cè)試表*/
CREATE TABLE [Scores]
(
[ID] INT IDENTITY(1, 1)
PRIMARY KEY ,
[Student] VARCHAR(20) ,
[Subject] VARCHAR(30) ,
[Score] FLOAT
)
go
TRUNCATE TABLE Scores
/*插入數(shù)據(jù)庫(kù)測(cè)試數(shù)據(jù)信息*/
INSERT INTO Scores
( Student, Subject, Score )
VALUES ( 'test001', '語(yǔ)文', '90' )
INSERT INTO Scores
( Student, Subject, Score )
VALUES ( 'test001', '英語(yǔ)', '85' )
INSERT INTO Scores
( Student, Subject, Score )
VALUES ( 'text002', '語(yǔ)文', '90' )
INSERT INTO Scores
( Student, Subject, Score )
VALUES ( 'text002', '英語(yǔ)', '80' )
INSERT INTO Scores
( Student, Subject, Score )
VALUES ( 'test003', '語(yǔ)文', '95' )
INSERT INTO Scores
( Student, Subject, Score )
VALUES ( 'test003', '英語(yǔ)', '85' )
/*1. case when .......then else ....end 用法,行列轉(zhuǎn)換*/
SELECT Student AS '姓名' ,
MAX(CASE Subject
WHEN '語(yǔ)文' THEN Score
ELSE 0
END) AS '語(yǔ)文' ,--如果這個(gè)行是“語(yǔ)文”,就選此行作為列
MAX(CASE Subject
WHEN '英語(yǔ)' THEN Score
ELSE 0
END) AS '英語(yǔ)'
FROM Scores
GROUP BY Student
ORDER BY Student
/*2. pivot(聚合函數(shù)(要轉(zhuǎn)成列值的列名)
for 要轉(zhuǎn)換的列
in(目標(biāo)列名)
)*/
SELECT Student AS '姓名' ,
AVG(語(yǔ)文) AS '語(yǔ)文' ,
AVG(英語(yǔ)) AS '英語(yǔ)'
FROM Scores PIVOT( AVG(Score) FOR Subject IN ( 語(yǔ)文, 英語(yǔ) ) )as NewScores
GROUP BY Student
ORDER BY Student ASC
相關(guān)文章
MySQL計(jì)劃任務(wù)(事件調(diào)度器) Event Scheduler介紹
MySQL5.1.x版本中引入了一項(xiàng)新特性EVENT,顧名思義就是事件、定時(shí)任務(wù)機(jī)制,在指定的時(shí)間單元內(nèi)執(zhí)行特定的任務(wù),因此今后一些對(duì)數(shù)據(jù)定時(shí)性操作不再依賴外部程序,而直接使用數(shù)據(jù)庫(kù)本身提供的功能2013-10-10
mysql 發(fā)生系統(tǒng)錯(cuò)誤1067的解決方法
今天要把WEB項(xiàng)目打包成EXE,可是在數(shù)據(jù)庫(kù)上卡住了。在啟動(dòng)數(shù)據(jù)庫(kù)服務(wù)的時(shí)候發(fā)生系統(tǒng)錯(cuò)誤 1067。2009-09-09
一文教你快速生成MySQL數(shù)據(jù)庫(kù)關(guān)系圖
我們經(jīng)常會(huì)用到一些表的數(shù)據(jù)庫(kù)關(guān)系圖,下面這篇文章主要給大家介紹了關(guān)于生成MySQL數(shù)據(jù)庫(kù)關(guān)系圖的相關(guān)資料,文中通過(guò)圖文以及實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06
MySQL降權(quán)運(yùn)行之MySQL以Guests帳戶啟動(dòng)設(shè)置方法
我們?cè)趙indows服務(wù)器中使用mysql數(shù)據(jù)的時(shí)候,mysql默認(rèn)都是以system權(quán)限運(yùn)行,如果出現(xiàn)了安全問(wèn)題,黑客就可以通過(guò)mysql提權(quán)新建用戶什么的,所以mysql低權(quán)限運(yùn)行非常必要2014-07-07
MySQL數(shù)據(jù)庫(kù)優(yōu)化詳解
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)優(yōu)化的方方面面,各種小技巧,需要的朋友可以參考下2014-08-08

