行轉(zhuǎn)列,列轉(zhuǎn)行是我們在開發(fā)過程中經(jīng)常碰到的問題。
行轉(zhuǎn)列一般通過CASE WHEN 語句來實(shí)現(xiàn),也可以通過 SQL SERVER 的運(yùn)算符PIVOT來實(shí)現(xiàn)。
用傳統(tǒng)的方法,比較好理解。層次清晰,而且比較習(xí)慣。 但是PIVOT 、UNPIVOT提供的語法比一系列復(fù)雜的SELECT…CASE 語句中所指定的語法更簡單、更具可讀性。下面我們通過幾個簡單的例子來介紹一下列轉(zhuǎn)行、行轉(zhuǎn)列問題。
我們首先先通過一個老生常談的例子,學(xué)生成績表(下面簡化了些)來形象了解下行轉(zhuǎn)列
CREATE TABLE [StudentScores]
(
[UserName] NVARCHAR(20), --學(xué)生姓名
[Subject] NVARCHAR(30), --科目
[Score] FLOAT, --成績
)