LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

SQL如何實(shí)現(xiàn)數(shù)據(jù)表行轉(zhuǎn)列、列轉(zhuǎn)行?

admin
2024年2月19日 16:7 本文熱度 981

SQL行轉(zhuǎn)列、列轉(zhuǎn)行可以幫助我們更方便地處理數(shù)據(jù),生成需要的報(bào)表和結(jié)果集。本文將介紹在SQL中如何實(shí)現(xiàn)數(shù)據(jù)表地行轉(zhuǎn)列、列轉(zhuǎn)行操作,以及實(shí)際應(yīng)用示例。

這里通過表下面三張表進(jìn)行舉例,建表語句和示例數(shù)據(jù)插入語句可以查看我之前的文章。

SQL創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)表

數(shù)據(jù)分析師的日常,公眾號(hào):數(shù)據(jù)分析師的日常SQL創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)表

數(shù)據(jù)表示例數(shù)據(jù)分別如下:

data_learning.product_order(商品銷量表):

data_learning.product(商品信息表):    

data_learning.product_category(商品二級(jí)分類信息表):

01

行轉(zhuǎn)列

1.1 使用CASE WHEN語句+聚合函數(shù)  

問題:請(qǐng)查詢女裙和兒童家具的銷量,輸出結(jié)果形式為女裙銷量作為一列,兒童家具作為一列。

SQL:

SELECT SUM(CASE WHEN c.category_name = '女裙' THEN a.sales_volume ELSE 0 END) AS 女裙銷量, SUM(CASE WHEN c.category_name = '兒童家具' THEN a.sales_volume ELSE 0 END) AS 兒童家具銷量 FROM data_learning.product_order a LEFT JOIN (SELECT * FROM data_learning.product_category) c on a.category_id = c.category_id;

結(jié)果如下:

1.2 使用if函數(shù)+聚合函數(shù)  

同樣是上面那個(gè)問題,用第二種方式如何實(shí)現(xiàn)呢?

SQL:

SELECT SUM(IF(c.category_name = '女裙',sales_volume,0 )) AS 女裙銷量, SUM(IF(c.category_name = '兒童家具',sales_volume,0)) AS 兒童家具銷量 FROM data_learning.product_order a LEFT JOIN (SELECT * FROM data_learning.product_category) c on a.category_id = c.category_id;

結(jié)果如下

在實(shí)際工作中,使用場(chǎng)景可能比這個(gè)復(fù)雜。

比如“請(qǐng)查詢每個(gè)月女裙和兒童家具地銷量,輸出結(jié)果形式為女裙銷量作為一列,兒童家具作為一列”。這個(gè)時(shí)候,可以結(jié)合GROUP BY語句去實(shí)現(xiàn)。

同時(shí),聚合函數(shù)可能也不一定是SUM,有可能是MAX,這個(gè)都要根據(jù)具體的業(yè)務(wù)定義,數(shù)據(jù)表內(nèi)容等去靈活運(yùn)用

02

列轉(zhuǎn)行

2.1 使用 UNION ALL或UNION語句  

我們將上面行轉(zhuǎn)列的數(shù)據(jù)結(jié)果插入到一張臨時(shí)表data_learning.tmp_test,然后用這個(gè)把這個(gè)表的結(jié)果做列轉(zhuǎn)行操作,也就是女裙和兒童家具變成行。

step1 : 上面的查詢結(jié)果存入臨時(shí)表。(實(shí)際工作中不用,這里僅僅是想用上面的數(shù)據(jù)另建一張表作為操作示例)    

CREATE TABLE data_learning.tmp_test AS SELECT SUM(IF(c.category_name = '女裙',sales_volume,0 )) AS 女裙銷量, SUM(IF(c.category_name = '兒童家具',sales_volume,0)) AS 兒童家具銷量 FROM data_learning.product_order a LEFT JOIN (SELECT * FROM data_learning.product_category) c on a.category_id = c.category_id;

step2:做列轉(zhuǎn)行操作

SELECT '女裙' AS 類別, 女裙銷量 AS 銷量 FROM data_learning.tmp_test UNION ALL SELECT '兒童家具' AS 類別, 兒童家具銷量 AS 銷量 FROM data_learning.tmp_test;

結(jié)果如下

行轉(zhuǎn)列與列轉(zhuǎn)行是SQL中非常重要的數(shù)據(jù)轉(zhuǎn)換技巧。通過掌握這些技巧,你可以更加靈活地處理和分析數(shù)據(jù),提高數(shù)據(jù)處理效率。希望本文能對(duì)你有所幫助!


該文章在 2024/2/19 16:07:21 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲(chǔ)管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
亚洲日韩国产第一区 | 亚洲精品第一国产综合高清 | 免费看国产大片AV | 性做久久久久久免费观看 | 亚洲高清aⅴ日本欧美视频 亚洲性爱国产性爱 | 一本正道久久网综合久久88 |