生活随笔
收集整理的這篇文章主要介紹了
SQL Server:使用 PIVOT 行转列和 UNPIVOT 列转行
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
| ylbtech-SQL Server:使用 PIVOT 行轉列和 UNPIVOT 列轉行 |
可以使用 PIVOT 和 UNPIVOT 關系運算符將表值表達式更改為另一個表。PIVOT 通過將表達式某一列中的唯一值轉換為輸出中的多個列來旋轉表值表達式,并在必要時對最終輸出中所需的任何其余列值執行聚合。UNPIVOT 與 PIVOT 執行相反的操作,將表值表達式的列轉換為列值。 【注】對升級到 SQL Server 2005 或更高版本的數據庫使用 PIVOT 和 UNPIVOT 時,必須將數據庫的兼容級別設置為 90 或更高。有關如何設置數據庫兼容級別的信息,請參閱 sp_dbcmptlevel (Transact-SQL)。
1、
PIVOT 提供的語法比一系列復雜的 SELECT...CASE 語句中所指定的語法更簡單和更具可讀性。有關 PIVOT 語法的完整說明,請參閱 FROM (Transact-SQL)。
以下是帶批注的 PIVOT 語法。
SELECT <非透視的列
>,[第一個透視的列] AS <列名稱
>,[第二個透視的列] AS <列名稱
>,...[最后一個透視的列] AS <列名稱
>,
FROM(<生成數據的
SELECT 查詢
>)AS <源查詢的別名
>
PIVOT
(<聚合函數
>(
<要聚合的列
>)
FOR
[<包含要成為列標題的值的列>]IN (
[第一個透視的列],
[第二個透視的列],... [最后一個透視的列])
) AS <透視表的別名
>
<可選的
ORDER BY 子句
>;
2、
0、 ?
示例腳本源 1、 P1、如果我想知道每位學生的每科成績,而且每個學生的全部成績排成一行,這樣方便我查看、統計,導出數據 1-1、
--A1、傳統 case 方法
select username
as '姓名'
,max(
case [subject] when '語文' then score
else 0 end)
as '語文'
,max(
case [subject] when '數學' then score
else 0 end)
as '數學'
,max(
case [subject] when '英語' then score
else 0 end)
as '英語'
,max(
case [subject] when '生物' then score
else 0 end)
as '生物'
from StudentScores
group by username;
1-2、
-- A2:PIVOT 方法
select username
as '姓名',
[語文],
[數學],
[英語],
[生物] from StudentScores a
PIVOT
(
max(a.score)
for a.subject
in(
[語文],
[數學],
[英語],
[生物])
)b; 1-3、查詢結果 1-4、 2、
0、 ?
示例腳本源 1、
-- P1:查詢項目每個供應商的供給數量?
-- A1:UNPIVOT 方法
select b.projectName,b.supplier,b.supllyNumber
from (
select projectName,overseaSupply,nativeSupply,southSupply,northSupply
from ProjectDetail) a
UNPIVOT
(
supllyNumber for supplier
in(overseaSupply,nativeSupply,southSupply,northSupply)
)b; 2、
1、建立一個銷售情況表,其中,year字段表示年份,quarter字段表示季度,amount字段表示銷售額。quarter字段分別用Q1, Q2, Q3, Q4表示一、二、三、四季度。 2、 ?
示例腳本源 3、
1、官方示例 https://technet.microsoft.com/zh-cn/library/ms177410(v=sql.105).aspx#簡單 PIVOT 示例 1,
本文轉自ylbtech博客園博客,原文鏈接:http://www.cnblogs.com/ylbtech/p/8028808.html,如需轉載請自行聯系原作者
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
總結
以上是生活随笔為你收集整理的SQL Server:使用 PIVOT 行转列和 UNPIVOT 列转行的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。