亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁(yè) > 知識(shí)庫(kù) > 深入SQL中PIVOT 行列轉(zhuǎn)換詳解

深入SQL中PIVOT 行列轉(zhuǎn)換詳解

熱門(mén)標(biāo)簽:美國(guó)地圖標(biāo)注軟件下載 怎么修改高德地圖標(biāo)注 合肥crm外呼系統(tǒng)加盟 西安電話(huà)自動(dòng)外呼系統(tǒng) 硅基電話(huà)機(jī)器人官網(wǎng) 長(zhǎng)沙外呼系統(tǒng)平臺(tái) 電話(huà)機(jī)器人怎么看余額 城市地圖標(biāo)志怎么標(biāo)注 漯河電銷(xiāo)回?fù)芡夂粝到y(tǒng)

PIVOT通過(guò)將表達(dá)式某一列中的唯一值轉(zhuǎn)換為輸出中的多個(gè)列來(lái)旋轉(zhuǎn)表值表達(dá)式,并在必要時(shí)對(duì)最終輸出中所需的任何其余列值執(zhí)行聚合。UNPIVOT與PIVOT執(zhí)行相反的操作,將表值表達(dá)式的列轉(zhuǎn)換為列值。

通俗簡(jiǎn)單的說(shuō):PIVOT就是行轉(zhuǎn)列,UNPIVOT就是列傳行

一、PIVOT實(shí)例

1. 建表

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

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

2. 填入表數(shù)據(jù)

使用如下程序填入表數(shù)據(jù)。

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、如果我們要比較每年中各季度的銷(xiāo)售狀況,要怎么辦呢?有以下兩種方法:

(1)、使用傳統(tǒng)Select的CASE語(yǔ)句查詢(xún)

在SQL Server以前的版本里,將行級(jí)數(shù)據(jù)轉(zhuǎn)換為列級(jí)數(shù)據(jù)就要用到一系列CASE語(yǔ)句和聚合查詢(xún)。雖然這種方式讓開(kāi)發(fā)人員具有了對(duì)所返回?cái)?shù)據(jù)進(jìn)行高度控制的能力,但是編寫(xiě)出這些查詢(xún)是一件很麻煩的事情。

  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

得到的結(jié)果如下:

(2)、使用PIVOT

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

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

得到的結(jié)果如下:


二、通過(guò)下面一個(gè)實(shí)例詳細(xì)介紹PIVOT的過(guò)程

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

三.UNPIVOT

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

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

UNPIVOT實(shí)例

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實(shí)例的分析

UNPIVOT的輸入是左表表達(dá)式P,第一步,先為P中的行生成多個(gè)副本,在UNPIVOT中出現(xiàn)的每一列,都會(huì)生成一個(gè)副本。因?yàn)檫@里的IN子句有5個(gè)列名稱(chēng),所以要為每個(gè)來(lái)源行生成5個(gè)副本。結(jié)果得到的虛擬表中將新增一個(gè)列,用來(lái)以字符串格式保存來(lái)源列的名稱(chēng)(for和IN之間的,上面例子是 Employee )。第二步,根據(jù)新增的那一列中的值從來(lái)源列中提取出與列名對(duì)應(yīng)的行。第三步,刪除掉結(jié)果列值為null的行,完成這個(gè)查詢(xún)。

您可能感興趣的文章:
  • mysql 行轉(zhuǎn)列和列轉(zhuǎn)行實(shí)例詳解
  • mssql 數(shù)據(jù)庫(kù)表行轉(zhuǎn)列,列轉(zhuǎn)行終極方案
  • SQL行轉(zhuǎn)列和列轉(zhuǎn)行代碼詳解
  • sql語(yǔ)句實(shí)現(xiàn)行轉(zhuǎn)列的3種方法實(shí)例
  • SQLServer行轉(zhuǎn)列實(shí)現(xiàn)思路記錄
  • 一個(gè)簡(jiǎn)單的SQL 行列轉(zhuǎn)換語(yǔ)句
  • MySQL存儲(chǔ)過(guò)程中使用動(dòng)態(tài)行轉(zhuǎn)列
  • 數(shù)據(jù)庫(kù)實(shí)現(xiàn)行列轉(zhuǎn)換(mysql示例)
  • mysql 列轉(zhuǎn)行,合并字段的方法(必看)
  • SQL行轉(zhuǎn)列、列轉(zhuǎn)行的簡(jiǎn)單實(shí)現(xiàn)

標(biāo)簽:玉溪 文山 濟(jì)源 商洛 撫順 吉林 廣西 瀘州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《深入SQL中PIVOT 行列轉(zhuǎn)換詳解》,本文關(guān)鍵詞  深入,SQL,中,PIVOT,行列,轉(zhuǎn)換,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《深入SQL中PIVOT 行列轉(zhuǎn)換詳解》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于深入SQL中PIVOT 行列轉(zhuǎn)換詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    国产伦久视频免费观看 视频| 国产网站免费在线观看| 黄色短视频网站| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 久久成人亚洲| 亚久久伊人精品青青草原2020| 一级女性全黄生活片免费| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 天天做人人爱夜夜爽2020毛片| 国产a毛片| 久草免费资源| 九九精品在线| 国产一级强片在线观看| 久久99中文字幕| 日韩中文字幕在线观看视频| 成人免费一级毛片在线播放视频| 亚洲第一色在线| 成人免费高清视频| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 日本特黄特黄aaaaa大片| 999久久狠狠免费精品| 四虎影视库| 麻豆系列国产剧在线观看| 四虎影视库| 国产一区二区精品久| 欧美α片无限看在线观看免费| 日韩中文字幕在线观看视频| 国产视频久久久| 四虎影视库| 亚洲天堂在线播放| 999久久狠狠免费精品| 黄视频网站在线免费观看| 韩国毛片 免费| 四虎久久影院| 成人免费观看的视频黄页| 欧美激情一区二区三区视频| 久久福利影视| 日韩男人天堂| 欧美一级视频免费观看| 亚飞与亚基在线观看| 日韩av片免费播放| 免费毛片基地| 国产成人精品在线| 日韩中文字幕在线亚洲一区| 国产成人啪精品视频免费软件| 日韩中文字幕在线播放| 国产综合成人观看在线| 国产极品精频在线观看| a级精品九九九大片免费看| 可以在线看黄的网站| 99久久精品国产高清一区二区| 韩国三级视频在线观看| 日韩专区一区| 亚洲第一色在线| 午夜久久网| 国产一区二区福利久久| 精品国产一区二区三区久久久狼| 你懂的福利视频| 成人高清护士在线播放| 久久久成人影院| 国产成人精品综合久久久| 国产网站免费| 可以免费看污视频的网站| 美女免费毛片| 国产综合91天堂亚洲国产| 九九久久国产精品| 99热精品一区| 亚欧视频在线| 成人a级高清视频在线观看| 国产伦久视频免费观看视频| 香蕉视频一级| 国产精品免费精品自在线观看| 一级女性全黄生活片免费| 免费的黄色小视频| 久久99欧美| 免费一级生活片| 99色视频在线观看| 欧美日本二区| 久久精品免视看国产明星| 国产视频一区二区三区四区| 91麻豆爱豆果冻天美星空| 欧美另类videosbestsex| 亚欧视频在线| 91麻豆精品国产片在线观看| 欧美激情在线精品video| 成人影院久久久久久影院| 久草免费在线观看| 一级女性全黄久久生活片| 亚洲精品久久玖玖玖玖| 国产成人精品综合在线| 欧美激情中文字幕一区二区| 日本在线不卡视频| 国产91精品露脸国语对白| 日本乱中文字幕系列| 黄色福利片| 沈樵在线观看福利| 天天做日日干| 精品视频一区二区| 可以免费看污视频的网站| 午夜激情视频在线播放| 久草免费在线视频| 色综合久久天天综合观看| 日韩一级黄色片| 欧美激情影院| 精品视频在线观看一区二区 | 日本在线不卡视频| 国产成人女人在线视频观看 | 99色视频在线| 久久国产影视免费精品| 精品国产一区二区三区久久久蜜臀| 91麻豆爱豆果冻天美星空| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产精品1024永久免费视频| 日日夜夜婷婷| 成人免费观看的视频黄页| 日本在线播放一区| 成人免费一级纶理片| 黄色免费三级| 国产激情视频在线观看| 九九精品久久| 二级片在线观看| 91麻豆高清国产在线播放| 青青久久国产成人免费网站| 国产不卡在线播放| 你懂的福利视频| 香蕉视频一级| 精品视频在线观看视频免费视频| 日韩中文字幕一区二区不卡| 天天色色色| 免费一级片网站| 精品国产香蕉在线播出| 欧美激情伊人| 亚洲第一色在线| 国产一级强片在线观看| 国产91精品露脸国语对白| 国产a毛片| 日韩在线观看免费| 午夜激情视频在线观看| 亚洲www美色| 国产91视频网| 国产精品免费久久| 国产a毛片| 韩国三级香港三级日本三级la| 国产不卡在线观看视频| 九九免费高清在线观看视频| 日韩一级黄色| 欧美18性精品| 精品在线视频播放| 亚洲www美色| 麻豆网站在线看| 国产91视频网| 国产美女在线一区二区三区| 国产一区二区精品久久91| 成人免费观看的视频黄页| 国产网站在线| 亚洲 男人 天堂| 精品视频在线观看视频免费视频| 欧美另类videosbestsex高清| 一级片片| 国产网站在线| 九九久久国产精品| 美女被草网站| 韩国三级视频在线观看| 免费国产在线观看不卡| 99热精品在线| 国产91精品露脸国语对白| 免费一级片在线观看| 国产极品白嫩美女在线观看看| 欧美大片a一级毛片视频| 国产91丝袜在线播放0| 久久99中文字幕| 精品国产香蕉在线播出| 麻豆网站在线看| 91麻豆精品国产自产在线观看一区| 亚洲爆爽| 一a一级片| 日本在线播放一区| 国产综合成人观看在线| 欧美激情一区二区三区视频| 97视频免费在线| 国产原创中文字幕| 国产成人女人在线视频观看 | 天天色色色| 一本高清在线| 国产a视频| 色综合久久手机在线| 二级片在线观看| 精品久久久久久影院免费| 91麻豆国产福利精品| 日韩av片免费播放| 亚洲www美色| 韩国三级香港三级日本三级la| 国产视频一区二区在线观看| 精品国产三级a∨在线观看| 黄色免费网站在线| 国产综合91天堂亚洲国产| 久久久成人网| 久久成人综合网| 二级特黄绝大片免费视频大片| 免费毛片播放|