天天看點

SQL行轉列彙總

PIVOT 用于将列值旋轉為列名(即行轉列),在 SQL Server 2000可以用聚合函數配合CASE語句實作

PIVOT 的一般文法是:PIVOT(聚合函數(列) FOR 列 in (…) )AS P

注意:PIVOT、UNPIVOT是SQL Server 2005 的文法,使用需修改資料庫相容級别(在資料庫屬性->選項->相容級别改為   90 )

SQL2008 中可以直接使用

完整文法:

SQL行轉列彙總
SQL行轉列彙總

View Code

UNPIVOT 用于将列明轉為列值(即列轉行),在SQL Server 2000可以用UNION來實作

SQL行轉列彙總
SQL行轉列彙總

典型執行個體

一、行轉列

1、建立表格

姓名       課程       分數

---------- ---------- -----------

張三       國文        74

張三       數學        83

張三       實體        93

李四       國文        74

李四       數學        84

李四       實體        94

2、使用SQL Server 2000靜态SQL

SQL行轉列彙總
SQL行轉列彙總

3、使用SQL Server 2000動态SQL

SQL行轉列彙總
SQL行轉列彙總

4、使用SQL Server 2005靜态SQL

姓名       國文        數學        實體

---------- ----------- ----------- -----------

李四        74          84          94

張三        74          83          93

二、行轉列結果加上總分、平均分

1、使用SQL Server 2000靜态SQL

SQL行轉列彙總
SQL行轉列彙總

姓名       國文        數學        實體        總分        平均分

---------- ----------- ----------- ----------- -----------

李四        74          84          94          252         84.00

張三        74          83          93          250         83.33

2、使用SQL Server 2000動态SQL

SQL行轉列彙總
SQL行轉列彙總

3、使用SQL Server 2005靜态SQL

4、使用SQL Server 2005動态SQL

SQL行轉列彙總
SQL行轉列彙總

二、列轉行

張三       74          83          93

SQL行轉列彙總
SQL行轉列彙總

姓名       課程 分數

---------- ---- -----------

李四       國文 74

李四       數學 84

李四       實體 94

張三       國文 74

張三       數學 83

張三       實體 93

SQL行轉列彙總
SQL行轉列彙總