PIVOT 用于将列值旋轉為列名(即行轉列),在 SQL Server 2000可以用聚合函數配合CASE語句實作
PIVOT 的一般文法是:PIVOT(聚合函數(列) FOR 列 in (…) )AS P
注意:PIVOT、UNPIVOT是SQL Server 2005 的文法,使用需修改資料庫相容級别(在資料庫屬性->選項->相容級别改為 90 )
SQL2008 中可以直接使用
完整文法:
View Code
UNPIVOT 用于将列明轉為列值(即列轉行),在SQL Server 2000可以用UNION來實作
典型執行個體
一、行轉列
1、建立表格
姓名 課程 分數
---------- ---------- -----------
張三 國文 74
張三 數學 83
張三 實體 93
李四 國文 74
李四 數學 84
李四 實體 94
2、使用SQL Server 2000靜态SQL
3、使用SQL Server 2000動态SQL
4、使用SQL Server 2005靜态SQL
姓名 國文 數學 實體
---------- ----------- ----------- -----------
李四 74 84 94
張三 74 83 93
二、行轉列結果加上總分、平均分
1、使用SQL Server 2000靜态SQL
姓名 國文 數學 實體 總分 平均分
---------- ----------- ----------- ----------- -----------
李四 74 84 94 252 84.00
張三 74 83 93 250 83.33
2、使用SQL Server 2000動态SQL
3、使用SQL Server 2005靜态SQL
4、使用SQL Server 2005動态SQL
二、列轉行
張三 74 83 93
姓名 課程 分數
---------- ---- -----------
李四 國文 74
李四 數學 84
李四 實體 94
張三 國文 74
張三 數學 83
張三 實體 93