欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2019年05月19日 10:36:32   作者:李英杰同學(xué)  
這篇文章主要給大家介紹了關(guān)于SQL行轉(zhuǎn)列、列轉(zhuǎn)行的簡(jiǎn)單實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用SQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

前言

行列轉(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 (語(yǔ)文, 數(shù)學(xué), 英語(yǔ))
)

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

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

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

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

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

列轉(zhuǎn)行

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

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

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

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

SELECT
  NAME,
  '語(yǔ)文' AS subject ,
  MAX("語(yǔ)文") 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,
  '英語(yǔ)' AS subject ,
  MAX("英語(yǔ)") AS score
FROM student1 GROUP BY NAME

總結(jié)

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

相關(guān)文章

  • 14種SQL的進(jìn)階用法分享(更高效地處理數(shù)據(jù))

    14種SQL的進(jìn)階用法分享(更高效地處理數(shù)據(jù))

    在實(shí)際的數(shù)據(jù)庫(kù)使用中除了CRUD還有很多高級(jí)應(yīng)用值得學(xué)習(xí)和掌握,能夠在平時(shí)的工作中得到很多便利,這篇文章主要給大家分享介紹了14種SQL的進(jìn)階用法,通過文中介紹的方法可以更高效地處理數(shù)據(jù)庫(kù)數(shù)據(jù),需要的朋友可以參考下
    2024-01-01
  • 淺析GBase8s?唯一索引與非唯一索引問題

    淺析GBase8s?唯一索引與非唯一索引問題

    GBase8s中主鍵(PRIMARY?KEY)會(huì)自動(dòng)創(chuàng)建一個(gè)唯一索引。一個(gè)良好的表設(shè)計(jì)都應(yīng)該定義主鍵或者唯一約束索引。特別是在OLTP系統(tǒng)中,唯一索引可以幫助快速定位少量記錄,對(duì)GBase8s?索引相關(guān)知識(shí)感興趣的朋友一起看看吧
    2022-02-02
  • 實(shí)例介紹SQL注入以及如何解決

    實(shí)例介紹SQL注入以及如何解決

    這篇文章主要給大家介紹了關(guān)于SQL注入以及如何解決的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 詳解SQL中Group By的使用教程

    詳解SQL中Group By的使用教程

    這篇文章主要介紹了SQL中Group By的使用,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 介紹PostgreSQL中的jsonb數(shù)據(jù)類型

    介紹PostgreSQL中的jsonb數(shù)據(jù)類型

    這篇文章主要介紹了介紹PostgreSQL中的jsonb數(shù)據(jù)類型,jsonb是PostgreSQL9.4中開始內(nèi)置的類型,能夠支持GIN索引,需要的朋友可以參考下
    2015-04-04
  • sql中l(wèi)eft join的效率分析與提高效率方法

    sql中l(wèi)eft join的效率分析與提高效率方法

    網(wǎng)站隨著數(shù)據(jù)量與訪問量越來越大,訪問的速度變的越來越慢,于是開始想辦法解決優(yōu)化速度慢的原因,下面是對(duì)程序中一條sql的分析與提高效率的過程
    2018-03-03
  • 數(shù)據(jù)庫(kù)分頁(yè)查詢語(yǔ)句數(shù)據(jù)庫(kù)查詢

    數(shù)據(jù)庫(kù)分頁(yè)查詢語(yǔ)句數(shù)據(jù)庫(kù)查詢

    關(guān)于分頁(yè) SQL 的資料許多,有的使用存儲(chǔ)過程,有的使用游標(biāo)。本人不喜歡使用游標(biāo),我覺得它耗資、效率低;使用存儲(chǔ)過程是個(gè)不錯(cuò)的選擇,因?yàn)榇鎯?chǔ)過程是顛末預(yù)編譯的,執(zhí)行效率高,也更靈活
    2014-08-08
  • navicat如何執(zhí)行.sql文件

    navicat如何執(zhí)行.sql文件

    這篇文章主要介紹了navicat如何執(zhí)行.sql文件問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • mysql、mssql及oracle分頁(yè)查詢方法詳解

    mysql、mssql及oracle分頁(yè)查詢方法詳解

    這篇文章主要介紹了mysql、mssql及oracle分頁(yè)查詢方法,實(shí)例分析了數(shù)據(jù)庫(kù)分頁(yè)的實(shí)現(xiàn)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04
  • 數(shù)據(jù)庫(kù)中的左連接(left join)和右連接(right join)區(qū)別

    數(shù)據(jù)庫(kù)中的左連接(left join)和右連接(right join)區(qū)別

    關(guān)于左連接和右連接總結(jié)性的一句話,左連接 where只影向右表,右連接where只影響左表
    2012-06-06

最新評(píng)論