校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 深入SQL中PIVOT 行列轉換詳解

深入SQL中PIVOT 行列轉換詳解

熱門標簽:美國地圖標注軟件下載 怎么修改高德地圖標注 合肥crm外呼系統加盟 西安電話自動外呼系統 硅基電話機器人官網 長沙外呼系統平臺 電話機器人怎么看余額 城市地圖標志怎么標注 漯河電銷回撥外呼系統

PIVOT通過將表達式某一列中的唯一值轉換為輸出中的多個列來旋轉表值表達式,并在必要時對最終輸出中所需的任何其余列值執行聚合。UNPIVOT與PIVOT執行相反的操作,將表值表達式的列轉換為列值。

通俗簡單的說:PIVOT就是行轉列,UNPIVOT就是列傳行

一、PIVOT實例

1. 建表

建立一個銷售情況表,其中,year字段表示年份,quarter字段表示季度,amount字段表示銷售額。quarter字段分別用Q1, Q2, Q3, Q4表示一、二、三、四季度。

 CREATE TABLE SalesByQuarter
 ( year INT, -- 年份
  quarter CHAR(2), -- 季度
  amount MONEY -- 總額
 )

2. 填入表數據

使用如下程序填入表數據。

SET NOCOUNT ON
 DECLARE @index INT
 DECLARE @q INT
 SET @index = 0
 DECLARE @year INT
 while (@index  30)
 BEGIN
  SET @year = 2005 + (@index % 4)
  SET @q = (CAST((RAND() * 500) AS INT) % 4) + 1
  INSERT INTO SalesByQuarter VALUES (@year, 'Q' + CAST(@q AS CHAR(1)), RAND() * 10000.00)
  SET @index = @index + 1

3、如果我們要比較每年中各季度的銷售狀況,要怎么辦呢?有以下兩種方法:

(1)、使用傳統Select的CASE語句查詢

在SQL Server以前的版本里,將行級數據轉換為列級數據就要用到一系列CASE語句和聚合查詢。雖然這種方式讓開發人員具有了對所返回數據進行高度控制的能力,但是編寫出這些查詢是一件很麻煩的事情。

  SELECT year as 年份
  , sum (case when quarter = 'Q1' then amount else 0 end) 一季度
  , sum (case when quarter = 'Q2' then amount else 0 end) 二季度
  , sum (case when quarter = 'Q3' then amount else 0 end) 三季度
  , sum (case when quarter = 'Q4' then amount else 0 end) 四季度
 FROM SalesByQuarter GROUP BY year ORDER BY year DESC

得到的結果如下:

(2)、使用PIVOT

由于SQL Server 2005有了新的PIVOT運算符,就不再需要CASE語句和GROUP BY語句了。(每個PIVOT查詢都涉及某種類型的聚合,因此你可以忽略GROUP BY語句。)PIVOT運算符讓我們能夠利用CASE語句查詢實現相同的功能,但是你可以用更少的代碼就實現,而且看起來更漂亮。

SELECT year as 年份, Q1 as 一季度, Q2 as 二季度, Q3 as 三季度, Q4 as 四季度 FROM SalesByQuarter PIVOT (SUM (amount) FOR quarter IN (Q1, Q2, Q3, Q4) ) AS P ORDER BY YEAR DESC

得到的結果如下:


二、通過下面一個實例詳細介紹PIVOT的過程

SELECT [星期一],[星期二],[星期三],[星期四],[星期五],[星期六],[星期日]--這里是PIVOT第三步(選擇行轉列后的結果集的列)這里可以用“*”表示選擇所有列,也可以只選擇某些列(也就是某些天)
FROM WEEK_INCOME --這里是PIVOT第二步驟(準備原始的查詢結果,因為PIVOT是對一個原始的查詢結果集進行轉換操作,所以先查詢一個結果集出來)這里可以是一個select子查詢,但為子查詢時候要指定別名,否則語法錯誤
PIVOT
(
 SUM(INCOME) for [week] in([星期一],[星期二],[星期三],[星期四],[星期五],[星期六],[星期日])--這里是PIVOT第一步驟,也是核心的地方,進行行轉列操作。聚合函數SUM表示你需要怎樣處理轉換后的列的值,是總和(sum),還是平均(avg)還是min,max等等。例如如果week_income表中有兩條數據并且其week都是“星期一”,其中一條的income是1000,另一條income是500,那么在這里使用sum,行轉列后“星期一”這個列的值當然是1500了。后面的for [week] in([星期一],[星期二]...)中 for [week]就是說將week列的值分別轉換成一個個列,也就是“以值變列”。但是需要轉換成列的值有可能有很多,我們只想取其中幾個值轉換成列,那么怎樣取呢?就是在in里面了,比如我此刻只想看工作日的收入,在in里面就只寫“星期一”至“星期五”(注意,in里面是原來week列的值,"以值變列")。總的來說,SUM(INCOME) for [week] in([星期一],[星期二],[星期三],[星期四],[星期五],[星期六],[星期日])這句的意思如果直譯出來,就是說:將列[week]值為"星期一","星期二","星期三","星期四","星期五","星期六","星期日"分別轉換成列,這些列的值取income的總和。
)TBL--別名一定要寫

三.UNPIVOT

很明顯,UN這個前綴表明了,它做的操作是跟PIVOT相反的,即列轉行。UNPIVOT操作涉及到以下三個邏輯處理階段。

1,生成副本
2,提取元素
3,刪除帶有NULL的行

UNPIVOT實例

CREATE TABLE pvt (VendorID int, Emp1 int, Emp2 int,
 Emp3 int, Emp4 int, Emp5 int);
GO
INSERT INTO pvt VALUES (1,4,3,5,4,4);
INSERT INTO pvt VALUES (2,4,1,5,5,5);
INSERT INTO pvt VALUES (3,4,3,5,4,4);
INSERT INTO pvt VALUES (4,4,2,5,5,4);
INSERT INTO pvt VALUES (5,5,1,5,5,5);
GO
--Unpivot the table.
SELECT VendorID, Employee, Orders
FROM 
 (SELECT VendorID, Emp1, Emp2, Emp3, Emp4, Emp5
 FROM pvt) p
UNPIVOT
 (Orders FOR Employee IN 
  (Emp1, Emp2, Emp3, Emp4, Emp5)
)AS unpvt;
GO

上面UNPIVOT實例的分析

UNPIVOT的輸入是左表表達式P,第一步,先為P中的行生成多個副本,在UNPIVOT中出現的每一列,都會生成一個副本。因為這里的IN子句有5個列名稱,所以要為每個來源行生成5個副本。結果得到的虛擬表中將新增一個列,用來以字符串格式保存來源列的名稱(for和IN之間的,上面例子是 Employee )。第二步,根據新增的那一列中的值從來源列中提取出與列名對應的行。第三步,刪除掉結果列值為null的行,完成這個查詢。

您可能感興趣的文章:
  • mysql 行轉列和列轉行實例詳解
  • mssql 數據庫表行轉列,列轉行終極方案
  • SQL行轉列和列轉行代碼詳解
  • sql語句實現行轉列的3種方法實例
  • SQLServer行轉列實現思路記錄
  • 一個簡單的SQL 行列轉換語句
  • MySQL存儲過程中使用動態行轉列
  • 數據庫實現行列轉換(mysql示例)
  • mysql 列轉行,合并字段的方法(必看)
  • SQL行轉列、列轉行的簡單實現

標簽:玉溪 文山 濟源 商洛 撫順 吉林 廣西 瀘州

巨人網絡通訊聲明:本文標題《深入SQL中PIVOT 行列轉換詳解》,本文關鍵詞  深入,SQL,中,PIVOT,行列,轉換,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《深入SQL中PIVOT 行列轉換詳解》相關的同類信息!
  • 本頁收集關于深入SQL中PIVOT 行列轉換詳解的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    成人丝袜高跟foot| 韩国毛片一区二区三区| 国产色婷婷亚洲99精品小说| 一本到三区不卡视频| 青青草97国产精品免费观看 | 欧美一二三四在线| 国产成人精品亚洲午夜麻豆| 亚洲高清免费观看| 欧美高清在线精品一区| 欧美裸体一区二区三区| 成人黄页在线观看| 麻豆91精品视频| 亚洲国产中文字幕在线视频综合 | 舔着乳尖日韩一区| 国产精品另类一区| 久久久亚洲国产美女国产盗摄 | 国产99一区视频免费 | 国产精品一区二区三区网站| 五月婷婷综合激情| 亚洲欧美日韩国产另类专区| 久久精品男人天堂av| 欧美tickle裸体挠脚心vk| 91麻豆精品国产91久久久使用方法 | 午夜欧美在线一二页| 亚洲色图视频网站| 欧美经典一区二区| 久久久久久久久久久久久久久99 | 欧美激情一二三区| 精品久久国产老人久久综合| 7777女厕盗摄久久久| 欧美日韩精品免费观看视频| 日本韩国一区二区三区视频| av午夜精品一区二区三区| 成人性生交大片免费看中文网站| 国产麻豆成人传媒免费观看| 国内精品国产三级国产a久久| 日本vs亚洲vs韩国一区三区| 日韩av一级电影| 天天操天天色综合| 日本不卡免费在线视频| 免费在线观看一区二区三区| 美女在线观看视频一区二区| 看片的网站亚洲| 黄色小说综合网站| 国产一区不卡精品| 国产成人av一区二区三区在线观看| 精彩视频一区二区| 国产酒店精品激情| 成人激情小说乱人伦| eeuss国产一区二区三区| 99vv1com这只有精品| 91在线视频播放| 欧美亚洲一区二区在线观看| 欧美日韩三级视频| 欧美成人三级在线| 中文在线一区二区| 亚洲黄色免费电影| 香蕉加勒比综合久久| 奇米亚洲午夜久久精品| 国产乱淫av一区二区三区| 不卡一卡二卡三乱码免费网站| 成人激情免费电影网址| 91欧美一区二区| 欧美精品九九99久久| 久久综合国产精品| 亚洲丝袜精品丝袜在线| 午夜精品一区二区三区免费视频| 久久精品国产成人一区二区三区 | 欧美午夜精品一区| 欧美不卡一区二区| 成人欧美一区二区三区视频网页| 亚洲一区二区三区四区在线观看| 日本不卡一区二区三区高清视频| 国产高清视频一区| 欧美午夜不卡在线观看免费| 精品乱人伦一区二区三区| 中文字幕日本乱码精品影院| 亚洲成人三级小说| 国模冰冰炮一区二区| 在线视频国内一区二区| 日韩一级高清毛片| 国产精品美女一区二区在线观看| 亚洲国产欧美一区二区三区丁香婷| 麻豆一区二区99久久久久| 成人网在线免费视频| 欧美猛男超大videosgay| 久久美女艺术照精彩视频福利播放| 亚洲欧美乱综合| 黑人巨大精品欧美一区| 在线免费亚洲电影| 久久一区二区视频| 亚洲国产另类精品专区| 夫妻av一区二区| 91精品在线麻豆| 久久一日本道色综合| 亚洲一区在线看| 波多野洁衣一区| 欧美精品乱人伦久久久久久| 国产精品进线69影院| 蜜臀av性久久久久av蜜臀妖精| 国产成人一区二区精品非洲| 91麻豆精品91久久久久久清纯| 中文字幕视频一区二区三区久| 美女视频免费一区| 欧美日韩午夜在线| 亚洲人亚洲人成电影网站色| 国产一区二区三区在线观看免费视频| 91国产成人在线| 亚洲欧洲日韩av| 国产成a人亚洲| 欧美日韩免费观看一区三区| 国产精品亲子伦对白| 国产一区美女在线| 91精品国产综合久久香蕉麻豆 | 欧美日韩国产美女| 亚洲欧美自拍偷拍| 成人免费高清视频| 国产午夜精品在线观看| 激情综合五月天| 欧美一区二区网站| 午夜视黄欧洲亚洲| 欧美系列一区二区| 亚洲综合一区二区| 欧美性受xxxx| 亚洲免费观看高清完整版在线观看| 韩国三级中文字幕hd久久精品| 欧美高清精品3d| 五月天欧美精品| 色激情天天射综合网| 亚洲男人天堂av| 一本久久精品一区二区| 亚洲男人的天堂在线观看| 91女神在线视频| 亚洲精品美国一| 色欧美乱欧美15图片| 亚洲黄色尤物视频| 欧美色精品天天在线观看视频| 夜夜爽夜夜爽精品视频| 色94色欧美sute亚洲线路二| 一区二区三区在线观看国产| 欧美性猛片aaaaaaa做受| 一区二区三区欧美亚洲| 在线观看av不卡| 亚洲第一激情av| 日韩一级二级三级精品视频| 玖玖九九国产精品| 亚洲精品一区二区三区精华液 | 久久国产精品99精品国产| 精品国精品自拍自在线| 99re视频精品| 亚洲精品日韩专区silk| 精品视频在线看| 丝袜亚洲另类丝袜在线| 91精品国产麻豆| 青椒成人免费视频| 久久蜜桃香蕉精品一区二区三区| 大白屁股一区二区视频| 亚洲色图制服丝袜| 6080午夜不卡| 国产精品18久久久久久久久 | 亚洲444eee在线观看| 日韩一本二本av| 国产中文字幕精品| 成人欧美一区二区三区黑人麻豆 | 一本大道av一区二区在线播放| 亚洲一区二区三区四区不卡 | 中文字幕在线观看不卡视频| 色婷婷av一区二区三区之一色屋| 婷婷中文字幕综合| 国产日韩欧美精品一区| 在线视频你懂得一区二区三区| 蜜桃久久久久久久| 国产精品久久99| 在线电影院国产精品| 国产在线播放一区| 亚洲欧美一区二区在线观看| 在线91免费看| 大尺度一区二区| 天天综合色天天| 国产色爱av资源综合区| 欧美色爱综合网| 国产成人自拍在线| 亚洲v精品v日韩v欧美v专区| 国产午夜亚洲精品午夜鲁丝片| 93久久精品日日躁夜夜躁欧美| 蜜桃精品视频在线观看| 亚洲免费观看高清完整版在线 | 东方欧美亚洲色图在线| 亚洲成av人影院| 中文字幕精品一区二区三区精品| 7777精品伊人久久久大香线蕉完整版 | 欧美一区二区三区色| 成人a级免费电影| 午夜电影一区二区| 国产精品色一区二区三区| 欧美精品丝袜中出| 99视频国产精品| 精品一区二区三区视频在线观看| 亚洲免费视频成人| 久久久精品人体av艺术|