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