主頁 > 知識(shí)庫 > SQL行轉(zhuǎn)列、列轉(zhuǎn)行的簡(jiǎn)單實(shí)現(xiàn)

SQL行轉(zhuǎn)列、列轉(zhuǎn)行的簡(jiǎn)單實(shí)現(xiàn)

熱門標(biāo)簽:怎么申請(qǐng)400熱線電話 ai電話電話機(jī)器人 湖南保險(xiǎn)智能外呼系統(tǒng)產(chǎn)品介紹 泗洪正規(guī)電話機(jī)器人找哪家 河北便宜電銷機(jī)器人軟件 簡(jiǎn)單的智能語音電銷機(jī)器人 怎么去開發(fā)一個(gè)電銷機(jī)器人 小程序智能電話機(jī)器人 南昌呼叫中心外呼系統(tǒng)哪家好

前言

行列轉(zhuǎn)換在做報(bào)表分析時(shí)還是經(jīng)常會(huì)遇到的,今天就說一下如何實(shí)現(xiàn)行列轉(zhuǎn)換吧。

行列轉(zhuǎn)換就是如下圖所示兩種展示形式的互相轉(zhuǎn)換

行轉(zhuǎn)列

假如我們有下表:

SELECT *
FROM student
PIVOT (
 SUM(score) FOR subject IN (語文, 數(shù)學(xué), 英語)
)

通過上面 SQL 語句即可得到下面的結(jié)果

PIVOT 后跟一個(gè)聚合函數(shù)來拿到結(jié)果,F(xiàn)OR 后面跟的科目是我們要轉(zhuǎn)換的列,這樣的話科目中的語文、數(shù)學(xué)、英語就就被轉(zhuǎn)換為列。IN 后面跟的就是具體的科目值。

當(dāng)然我們也可以用 CASE WHEN 得到同樣的結(jié)果,就是寫起來麻煩一點(diǎn)。

SELECT name,
 MAX(
 CASE
 WHEN subject='語文'
 THEN score
 ELSE 0
 END) AS "語文",
 MAX(
 CASE
 WHEN subject='數(shù)學(xué)'
 THEN score
 ELSE 0
 END) AS "數(shù)學(xué)",
 MAX(
 CASE
 WHEN subject='英語'
 THEN score
 ELSE 0
 END) AS "英語"
FROM student
GROUP BY name

使用 CASE WHEN 可以得到和 PIVOT 同樣的結(jié)果,沒有 PIVOT 簡(jiǎn)單直觀。

列轉(zhuǎn)行

假設(shè)我們有下表 student1

SELECT *
FROM student1
UNPIVOT (
  score FOR subject IN ("語文","數(shù)學(xué)","英語")
)

通過 UNPIVOT 即可得到如下結(jié)果:

我們也可以使用下面方法得到同樣結(jié)果

SELECT
  NAME,
  '語文' AS subject ,
  MAX("語文") AS score
FROM student1 GROUP BY NAME
UNION
SELECT
  NAME,
  '數(shù)學(xué)' AS subject ,
  MAX("數(shù)學(xué)") AS score
FROM student1 GROUP BY NAME
UNION
SELECT
  NAME,
  '英語' AS subject ,
  MAX("英語") AS score
FROM student1 GROUP BY NAME

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。

您可能感興趣的文章:
  • mysql 行轉(zhuǎn)列和列轉(zhuǎn)行實(shí)例詳解
  • mysql 列轉(zhuǎn)行,合并字段的方法(必看)
  • mssql 數(shù)據(jù)庫表行轉(zhuǎn)列,列轉(zhuǎn)行終極方案
  • SQL行轉(zhuǎn)列和列轉(zhuǎn)行代碼詳解
  • mysql 列轉(zhuǎn)行的技巧(分享)
  • mysql列轉(zhuǎn)行以及年月分組實(shí)例
  • SQL知識(shí)點(diǎn)之列轉(zhuǎn)行Unpivot函數(shù)

標(biāo)簽:荊門 柳州 威海 江蘇 景德鎮(zhèn) 瀘州 那曲 淮安

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SQL行轉(zhuǎn)列、列轉(zhuǎn)行的簡(jiǎn)單實(shí)現(xiàn)》,本文關(guān)鍵詞  SQL,行轉(zhuǎn)列,列轉(zhuǎn),行的,簡(jiǎn)單,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《SQL行轉(zhuǎn)列、列轉(zhuǎn)行的簡(jiǎn)單實(shí)現(xiàn)》相關(guān)的同類信息!
  • 本頁收集關(guān)于SQL行轉(zhuǎn)列、列轉(zhuǎn)行的簡(jiǎn)單實(shí)現(xiàn)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章