精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

行轉列不再復雜:SQL高手都在用的技巧揭秘

數(shù)據(jù)庫 其他數(shù)據(jù)庫
將冗長的縱向數(shù)據(jù)“壓縮”為橫向結構,讓分析更高效。本文將通過實戰(zhàn)案例,手把手教你掌握 SQL 中行轉列的3 種核心方法,并揭示高手的隱藏技巧。

在數(shù)據(jù)世界中,數(shù)據(jù)的“形狀”往往決定分析的效率。例如:

  • 原始數(shù)據(jù):季度銷售額按行排列,難以直接生成年度對比報表。
  • 目標:將季度(Q1-Q4)轉換為列,直觀展示全年趨勢。

這就是行轉列(Pivot)的核心價值——將冗長的縱向數(shù)據(jù)“壓縮”為橫向結構,讓分析更高效。本文將通過實戰(zhàn)案例,手把手教你掌握 SQL 中行轉列的3 種核心方法,并揭示高手的隱藏技巧

一、行轉列原理:從行到列的數(shù)學邏輯

問題場景:假設有一張銷售表 sales

year

quarter

revenue

2023

Q1

5000

2023

Q2

7000

2023

Q3

6000

2023

Q4

8000

目標:將季度(Q1-Q4)轉換為列,輸出:

year

Q1

Q2

Q3

Q4

2023

5000

7000

6000

8000

核心邏輯

  1. 分組聚合:按年份分組,計算每個季度的銷售額。
  2. 列名固定:將季度值(Q1-Q4)作為新列名。
  3. 條件判斷:通過條件表達式(如CASE WHEN)將行數(shù)據(jù)映射到對應列。

前置 SQL:

CREATE TABLE`sales`  (
`year`varchar(255) CHARACTERSET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULLDEFAULTNULL,
`quarter`varchar(255) CHARACTERSET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULLDEFAULTNULL,
`revenue`varchar(255) CHARACTERSET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULLDEFAULTNULL
) ENGINE = InnoDBCHARACTERSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;


INSERTINTO`sales`VALUES ('2023', 'Q2', '7000');
INSERTINTO`sales`VALUES ('2023', 'Q3', '6000');
INSERTINTO`sales`VALUES ('2023', 'Q4', '8000');
INSERTINTO`sales`VALUES ('2023', 'Q1', '5000');

二、方法詳解:3 種行轉列實戰(zhàn)技巧

方法 1:經(jīng)典 CASE WHEN(通用版)

適用場景:所有 SQL 數(shù)據(jù)庫(MySQL、PostgreSQL、SQL Server 等)。代碼示例

SELECT
  year,
SUM(CASEWHENquarter = 'Q1'THEN revenue ELSE0END) AS Q1,
SUM(CASEWHENquarter = 'Q2'THEN revenue ELSE0END) AS Q2,
SUM(CASEWHENquarter = 'Q3'THEN revenue ELSE0END) AS Q3,
SUM(CASEWHENquarter = 'Q4'THEN revenue ELSE0END) AS Q4
FROM sales
GROUPBYyear;

關鍵點

  • CASE WHEN:為每個季度創(chuàng)建條件判斷,將符合條件的值匯總到對應列。
  • SUM():聚合非目標季度的值為 0,確保結果僅包含目標列的值。
  • GROUP BY:按年份分組,生成每行的年度匯總。

優(yōu)勢

  • 兼容性:所有 SQL 數(shù)據(jù)庫支持。
  • 可控性:可靈活調整列名和聚合方式(如MAX()AVG())。

方法 2:PIVOT 語句(簡潔版)

適用場景:SQL Server、Oracle、Snowflake 等支持PIVOT的數(shù)據(jù)庫。代碼示例

SELECT *
FROM sales
PIVOT (
  SUM(revenue)
  FOR quarter IN ('Q1', 'Q2', 'Q3', 'Q4')
) AS pivot_table;

關鍵點

  • PIVOT:直接指定要轉換的列(quarter)和目標列值(Q1-Q4)。
  • 自動聚合SUM()會自動對每個季度的revenue求和。

優(yōu)勢

  • 簡潔性:代碼行數(shù)減少 60%。
  • 可讀性:邏輯更直觀。

局限性

  • 不支持動態(tài)列:列名必須預先定義(如 Q1-Q4)。
  • 兼容性:部分數(shù)據(jù)庫(如 MySQL)不支持PIVOT

方法 3:動態(tài)列生成(進階版)

適用場景:列名未知或動態(tài)變化(如 quarter )。實現(xiàn)思路

  1. 獲取所有唯一列值:從數(shù)據(jù)中提取可能的列名。
  2. 動態(tài)生成 SQL 語句:通過應用程序或存儲過程拼接CASE WHEN條件。

示例(MySql)

-- 1. 獲取所有列名
SET @cols = NULL;
SELECTGROUP_CONCAT(DISTINCTCONCAT('SUM(CASE WHEN quarter = ''', quarter, ''' THEN revenue END) AS ', quarter))
INTO @cols
FROM sales;

-- 2. 拼接完整SQL語句
SET @sql = CONCAT(
'SELECT year, ', @cols,
' FROM sales
   GROUP BY year'
);

-- 3. 執(zhí)行動態(tài)SQL
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATEPREPARE stmt;

優(yōu)勢

  • 動態(tài)適應:列名無需硬編碼,適合未知或變化的列。

三、實戰(zhàn)案例:復雜場景下的行轉列

案例 1:多維度聚合(年+季度+產(chǎn)品)

需求:按年份和產(chǎn)品類型,統(tǒng)計各季度銷售額。原始數(shù)據(jù)

year

product

quarter

revenue

2023

A

Q1

3000

2023

A

Q2

4000

2023

B

Q1

2000

2023

B

Q2

3000

SQL 代碼(CASE WHEN)

SELECT
  year,
  product,
SUM(CASEWHENquarter = 'Q1'THEN revenue ELSE0END) AS Q1,
SUM(CASEWHENquarter = 'Q2'THEN revenue ELSE0END) AS Q2
FROM sales
GROUPBYyear, product;

輸出

year

product

Q1

Q2

2023

A

3000

4000

2023

B

2000

3000


案例 2:非數(shù)值型數(shù)據(jù)轉列

需求:統(tǒng)計不同地區(qū)的用戶注冊渠道(渠道為文本列)。原始數(shù)據(jù)

region

channel

count

北京

線上

150

北京

線下

100

上海

線上

200

SQL 代碼(PIVOT)

SELECT region, [線上], [線下]
FROM (
  SELECT region, channel, count
  FROM user_registration
) AS src
PIVOT (
  SUM(count)
  FOR channel IN ([線上], [線下])
) AS pvt;

輸出

region

線上

線下

北京

150

100

上海

200

NULL

四、性能優(yōu)化與常見問題

1. 性能優(yōu)化技巧

  • 索引優(yōu)化:在quarteryear等分組列上建立索引。
  • 避免全表掃描:使用WHERE子句過濾無關數(shù)據(jù)。
  • 列數(shù)控制:減少轉列的數(shù)量(如僅轉 Q1-Q4,而非所有月份)。

2. 常見問題解決

  • NULL 值處理
-- 替換NULL為0
COALESCE(SUM(...), 0) AS column_name
  • 列名沖突:使用AS關鍵字重命名列(如AS [Q1_Sales])。

五、進階技巧

結合窗口函數(shù)

在轉列前,先通過窗口函數(shù)計算累計值:

SELECT
  year,
SUM(CASEWHENquarter = 'Q1'THEN revenue END) AS Q1,
SUM(CASEWHENquarter = 'Q2'THEN revenue END) AS Q2,
SUM(CASEWHENquarter = 'Q3'THEN revenue END) AS Q3,
SUM(CASEWHENquarter = 'Q4'THEN revenue END) AS Q4,
-- 計算累計值
SUM(revenue) OVER (PARTITIONBYyearORDERBYquarter) AS cumulative
FROM sales
GROUPBYyear, quarter;

總結

方法

適用場景

代碼復雜度

兼容性

CASE WHEN

全平臺通用,動態(tài)列適配

所有數(shù)據(jù)庫

PIVOT

簡潔高效,列名固定

SQL Server 等

動態(tài) SQL 生成

列名未知或動態(tài)變化

需程序支持


責任編輯:武曉燕 來源: 程序員wayn
相關推薦

2025-07-11 01:05:41

2024-10-16 21:17:59

2025-07-22 07:43:26

2021-06-23 10:13:00

SQL行轉列列轉行

2021-12-16 22:59:21

SQL報表應用

2021-11-08 23:08:06

SQL Serve數(shù)據(jù)庫開發(fā)

2020-12-08 14:44:55

網(wǎng)站軟件學習

2024-08-21 08:43:53

Python技巧鍵值

2018-09-01 08:30:43

自媒體運營工具

2024-09-23 10:00:00

代碼Python

2010-07-28 09:09:55

SQL

2023-09-04 13:55:44

分支masterhotfix

2020-06-28 09:42:03

開發(fā)者技能工具

2010-07-13 16:07:26

SQL Server行

2021-09-27 09:14:40

B端設計師走查神器

2015-11-13 10:38:53

Github系統(tǒng)內部開源軟件

2024-11-14 09:42:32

2010-07-13 16:20:30

SQL Server數(shù)

2022-06-14 08:59:19

PythonerpdfkitPython

2013-06-13 08:57:47

Web開發(fā)Web工具Web訪談
點贊
收藏

51CTO技術棧公眾號

一个色综合网| 色综合视频一区二区三区44| 久久这里只有精品首页| 国产成人精品免高潮费视频| 99在线视频免费| 精品久久久久久久久久岛国gif| 亚洲资源中文字幕| 日韩.欧美.亚洲| av网站免费播放| 久久激情视频| 欧美成人午夜免费视在线看片 | 中文字幕色一区二区| 亚洲精品免费在线观看视频| 天堂午夜影视日韩欧美一区二区| 欧美成人免费全部| 人妻视频一区二区| 久久1电影院| 这里只有精品视频在线观看| 亚洲高清免费观看高清完整版在线观看 | 免费激情视频网站| 美腿丝袜亚洲综合| 96精品视频在线| 538精品在线视频| 欧美日韩一二三四| 日韩大陆毛片av| 精品人妻无码中文字幕18禁| 国产精品久久久久久吹潮| 疯狂蹂躏欧美一区二区精品| avove在线观看| av在线二区| 久久综合丝袜日本网| 国产精品久久久久久免费观看| 亚洲午夜在线播放| 美女尤物久久精品| 91精品国产高清| 久久久久久久99| 欧美日本不卡| 久久影视免费观看| 久久久久久久麻豆| 日韩一区自拍| 亚洲性夜色噜噜噜7777| 黄色工厂在线观看| 色老板在线视频一区二区| 精品久久一区二区三区| 国产一级免费大片| 亚洲国产精选| 欧美高清性hdvideosex| 九色porny自拍| 成人精品电影在线| 欧洲激情一区二区| caoporn超碰97| 深夜成人福利| 日本高清不卡一区| 免费看国产黄色片| 成人精品动漫| 91精品国产乱| av电影在线播放| 国内露脸中年夫妇交换精品| 亚洲精品在线观看视频| 亚洲麻豆一区二区三区| 成人在线超碰| 日韩精品免费在线观看| 五月婷婷综合在线观看| 亚洲欧美tv| 国产一区二区三区视频 | 久久成人综合| 久久精品中文字幕一区| 日韩影院一区二区| 欧美日韩岛国| 2019国产精品自在线拍国产不卡| 特一级黄色大片| 玖玖玖国产精品| 91精品国产综合久久香蕉最新版 | 久久精品色欧美aⅴ一区二区| 日韩av毛片在线观看| 欧美一区综合| 91精品国产成人www| 成人毛片一区二区三区| 麻豆精品视频在线观看| aaa级精品久久久国产片| 黄色小视频免费在线观看| 久久婷婷成人综合色| 亚洲最大免费| 不卡av免费观看| 色婷婷精品久久二区二区蜜臂av | 丰满爆乳一区二区三区| 日韩一区二区三区免费| 欧美一区二区三区免费在线看| 无码国产69精品久久久久网站| 亚洲婷婷伊人| 久久夜色撩人精品| 好看的av在线| 国产一区二区精品久久99| 国产日韩一区二区| av在线三区| 亚洲va国产天堂va久久en| 自拍偷拍 国产| 亚洲精品一区二区三区在线| 亚洲欧美中文日韩在线| 澳门黄色一级片| 美女91精品| 亚洲自拍偷拍麻豆| 午夜欧美不卡精品aaaaa| www.av88| a美女胸又www黄视频久久| 亚洲精品日韩在线观看| 成人高潮aa毛片免费| 欧美日韩五月天| 一级国产黄色片| 自拍偷拍欧美| 国产精品美女视频网站| 色呦呦免费观看| 亚洲日本在线视频观看| 日韩无套无码精品| 麻豆精品99| 欧美大肥婆大肥bbbbb| 老熟妇一区二区三区| 不卡一区二区中文字幕| dy888午夜| 日韩欧美2区| 国产视频精品免费播放| 日本特黄一级片| 国产美女一区二区| 亚洲日本理论电影| 桃子视频成人app| 亚洲国产一区二区三区在线观看| 国产激情无码一区二区三区| 男男成人高潮片免费网站| 蜜桃成人在线| 亚洲私拍视频| 亚洲国产小视频| 日韩伦理在线视频| 丁香另类激情小说| 欧美在线观看黄| 精品伊人久久| 美女精品视频一区| 国产女18毛片多18精品| 国产精品国产自产拍在线| 亚洲精品高清无码视频| 国产一区二区三区四区五区传媒| 97超碰国产精品女人人人爽 | 日韩av影片在线观看| 国产一国产二国产三| 国产精品一区二区久久不卡| 亚洲欧美一二三| 精品欧美视频| 色综合91久久精品中文字幕| 国产三区在线播放| 亚洲美女屁股眼交3| 中文字幕12页| 欧美激情麻豆| 国产精品美女xx| а√天堂中文在线资源8| 亚洲国产91精品在线观看| 国产无码精品在线播放| 99在线精品观看| www国产精品内射老熟女| 日韩av三区| 青青久久av北条麻妃黑人| 黄色片在线播放| 欧美日韩一区二区三区免费看| 日本人亚洲人jjzzjjz| 免费在线观看不卡| aaa免费在线观看| 66精品视频在线观看| 韩剧1988免费观看全集| 黄色片在线免费看| 欧美人伦禁忌dvd放荡欲情| 男人与禽猛交狂配| 成人国产亚洲欧美成人综合网| 欧美 日韩 激情| 成人精品久久| 91九色视频在线观看| 高清毛片在线观看| 一区二区国产精品视频| 一区二区三区黄色片| 一区二区三区成人在线视频| 成人在线视频免费播放| 日韩精品一级二级 | 国产乱码精品| 神马影院一区二区三区| 精品中文字幕一区二区三区| 91成人天堂久久成人| 成年人视频网站在线| 91精品视频网| www五月天com| 亚洲免费在线看| 9.1成人看片| 韩国一区二区三区| 1024av视频| 亚洲综合激情在线| 欧美高清视频一区| 精品国产亚洲一区二区三区| 5252色成人免费视频| 超碰在线caoporn| 亚洲精品视频中文字幕| 99久久久国产精品无码网爆| 好吊成人免视频| 国产精品丝袜一区二区| 91免费观看在线| 69久久精品无码一区二区| 久久婷婷丁香| 国产亚洲黄色片| 99精品一区| 欧洲在线视频一区| 成人性生交大片免费看96| 综合电影一区二区三区| 久久riav| 日韩中文一区二区| 国产精品视频免费在线| 亚洲天堂资源| 久久久久久久一区二区| 麻豆传媒在线完整视频| 亚洲欧美在线一区| 天天操天天干天天插| 91精品国产色综合久久不卡电影| 亚洲图片欧美日韩| 五月激情丁香一区二区三区| 欧美成人一区二区三区高清| 国产精品久久久久久久久免费桃花 | 成人小视频免费在线观看| 日本国产一级片| 日韩二区三区在线观看| 欧美日韩在线一| 99精品国产99久久久久久福利| 2021国产视频| 91精品久久久久久久蜜月| 色综合666| 久久av导航| 免费看成人片| 亚洲精品蜜桃乱晃| 欧美lavv| 久久99国产成人小视频| 你懂的网址一区二区三区| 欧美福利在线播放网址导航| 国产精品日韩欧美一区二区| 亚洲不卡视频| 不卡一区二区三区四区五区| 一本一道久久a久久| 成人欧美一区二区三区视频 | 成av人片在线观看www| 欧美交受高潮1| av中文字幕在线看| 久久露脸国产精品| 黄色在线观看www| 久久久久久久91| 国产一二在线播放| 欧美在线中文字幕| 色婷婷综合久久久中字幕精品久久 | 亚洲精品国产成人| 亚洲色大成网站www| 亚洲男人的天堂网站| 男人天堂综合| 中文日韩在线观看| 久久亚洲天堂| 欧美日韩成人在线观看| 青青青草视频在线| 4k岛国日韩精品**专区| 欧美色网一区| 国产在线高清精品| 欧洲精品99毛片免费高清观看| 成人av片网址| 国产99精品一区| 一区二区三区四区| 欧美日韩a区| 91国视频在线| 免费日本视频一区| 人妻少妇偷人精品久久久任期| 国产91精品精华液一区二区三区| 精品国产av色一区二区深夜久久| 久久综合视频网| 色偷偷www8888| 亚洲国产精品视频| 日本中文字幕第一页| 91久久精品一区二区| 国产免费无遮挡| 亚洲激情在线观看| 98在线视频| 久久免费视频这里只有精品| 亚洲欧美韩国| 91天堂在线视频| 任你弄精品视频免费观看| 亚洲欧美久久234| 亚洲无吗在线| 午夜dv内射一区二区| 国产高清久久久久| 国产三级视频网站| 综合久久久久久久| 精品美女久久久久| 欧美丰满少妇xxxxx高潮对白| 天堂v在线观看| 色老头一区二区三区在线观看| xxxx在线视频| 91精品啪在线观看麻豆免费| 国产日韩三级| 婷婷久久五月天| 午夜激情一区| 亚洲人成无码www久久久| 国产精品自拍av| 手机看片福利视频| 婷婷综合另类小说色区| 国产绿帽一区二区三区| 亚洲天堂日韩电影| 黄网av在线| 91久久久久久久久久久| 九色精品国产蝌蚪| 国产不卡一区二区视频| 精品一区二区久久| 日韩一区二区a片免费观看| 亚洲国产日韩在线一区模特| 91麻豆成人精品国产| 亚洲日本aⅴ片在线观看香蕉| 欧洲一区二区三区| 91精品视频免费看| 日韩系列欧美系列| 另类小说第一页| 91老师国产黑色丝袜在线| 久久精品久久精品久久| 欧美一区午夜视频在线观看| 超碰国产在线| 日韩美女毛茸茸| 欧美一级二级三级视频| 中文字幕人妻熟女人妻洋洋| 激情另类小说区图片区视频区| 亚洲av无码国产精品麻豆天美| 午夜精品国产更新| 亚洲国产精品久久人人爱潘金莲| 精品国产一区二区三区四区在线观看 | 日韩视频免费| 欧美熟妇精品一区二区蜜桃视频 | 国产精品久久久久久久久电影网| 国产在线视频一区二区| 午夜国产福利视频| 欧美日韩二区三区| 99免在线观看免费视频高清| 国产精品久久久久久久久久| 国产欧美高清视频在线| 欧在线一二三四区| 久久久久国产精品麻豆| 伊人中文字幕在线观看| 亚洲午夜精品久久久久久性色 | 亚洲区第一页| 奇米777第四色| 精品久久久久久国产| 日本ー区在线视频| 日韩av三级在线观看| 国内黄色精品| 高清av免费看| 亚洲视频图片小说| av中文字幕第一页| 久久久久久久久久久免费精品| 成人h动漫精品一区二区器材| 人人妻人人做人人爽| www.爱久久.com| 日本午夜视频在线观看| 亚洲天堂成人在线| 欧美黄页免费| 亚洲综合第一| 国产高清无密码一区二区三区| 日本少妇bbwbbw精品| 精品调教chinesegay| 国产精品毛片久久久久久久久久99999999 | 一区二区免费av| 亚洲综合精品久久| 午夜av免费在线观看| 国产精品久久av| 亚洲精品午夜av福利久久蜜桃| 又色又爽又黄18网站| 欧美日韩激情视频| 成人jjav| 国产精品9999久久久久仙踪林| 久久国产高清| 91狠狠综合久久久| 亚洲精品一区二区三区蜜桃下载| 自拍视频在线看| 青少年xxxxx性开放hg| 成人午夜免费av| 欧美视频xxxx| 欧美极品美女电影一区| 国产一区二区三区电影在线观看 | 免费黄色日本网站| 国产精品灌醉下药二区| 日韩性xxxx| 国产精品亚洲欧美导航| 亚洲无吗在线| 激情五月激情综合| 日韩极品精品视频免费观看| 国产日本久久| 99精品人妻少妇一区二区| 国产精品欧美综合在线| 日本免费不卡视频| 国产日韩精品入口| 国产精品外国| 精品国产欧美日韩不卡在线观看 | 最近中文字幕免费视频| 日韩一区二区视频| 欧洲av一区二区| 欧美久久久久久久久久久久久| 国产精品久久久久精k8| 亚洲三区在线播放|