1. 程式人生 > >Sql的行列轉換

Sql的行列轉換

serve server .com unpivot 新的 nbsp div code image

創建表scores

技術分享圖片

一、傳統的行列轉換

縱表轉橫表

我們要轉成的橫表是這樣子的:

技術分享圖片


pivot是sql server 2005 提供的運算符,所以只要數據庫在05版本以上的都可以使用。主要用於行和列的轉換。

pivot縱表轉橫表

select
t2.姓名,
t2.數學,
t2.物理,
t2.語文
from Scores as t1
pivot (sum(分數) for 課程 in(數學,語文,物理)) as t2

pivot將原來表中 課程字段中的 數據行 數學,語文,物理 轉換為列,並用sum取對應列的值。

unpivot 橫表轉縱表

select
     *
 from
 scores2
 unpivot (分數 for 課程 in (語文,數學,物理)) as t3

unpivot 將 語文,數學,物理 列轉為行,分數為新的一列存放對應的值。

Sql的行列轉換