最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

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

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

行轉(zhuǎn)列

假如我們有下表:

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

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

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

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

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 簡單直觀。

列轉(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)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。

相關(guān)文章

  • 關(guān)于數(shù)據(jù)庫性能優(yōu)化中的表結(jié)構(gòu)優(yōu)化

    關(guān)于數(shù)據(jù)庫性能優(yōu)化中的表結(jié)構(gòu)優(yōu)化

    這篇文章主要介紹了關(guān)于數(shù)據(jù)庫性能優(yōu)化中的表結(jié)構(gòu)優(yōu)化,合理的表結(jié)構(gòu)設(shè)計可以提高數(shù)據(jù)庫的查詢效率和性能,而不合理的表結(jié)構(gòu)設(shè)計則可能導(dǎo)致查詢效率低下、數(shù)據(jù)冗余、數(shù)據(jù)不一致等問題,需要的朋友可以參考下
    2023-07-07
  • 有效防止sql注入的方法演示

    有效防止sql注入的方法演示

    這篇文章主要給大家介紹了關(guān)于有效防止sql注入的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用sql具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Mybatis查詢延遲加載詳解及實例

    Mybatis查詢延遲加載詳解及實例

    這篇文章主要介紹了Mybatis查詢延遲加載詳解及實例的相關(guān)資料,Mybatis的延遲加載默認是關(guān)閉的,即默認是一次就將所有的嵌套SQL一并查了將對象所有的信息都查詢出來。開啟延遲加載有兩種方式,需要的朋友可以參考下
    2017-01-01
  • SQL注入詳解及防范方法

    SQL注入詳解及防范方法

    本文詳細講解了SQL注入及防范方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • NoSQL 數(shù)據(jù)庫你應(yīng)該了解的 10 件事

    NoSQL 數(shù)據(jù)庫你應(yīng)該了解的 10 件事

    NoSQL 數(shù)據(jù)庫通常使用廉價服務(wù)器集群去管理迅猛發(fā)展的數(shù)據(jù)和交易容量,而 RDBMS 傾向依賴昂貴的專業(yè)服務(wù)器和存儲系統(tǒng)。結(jié)果就是,NoSQL 系統(tǒng)的每千兆字節(jié)成本或者每秒的交易成本要很多倍的低于 RDBMS 系統(tǒng),這使得你可以非常低的成本去存儲和處理更多的數(shù)據(jù)。
    2016-04-04
  • sql Union和Union All的使用方法

    sql Union和Union All的使用方法

    UNION指令的目的是將兩個SQL語句的結(jié)果合并起來。從這個角度來看, 我們會產(chǎn)生這樣的感覺,UNION跟JOIN似乎有些許類似,因為這兩個指令都可以由多個表格中擷取資料。
    2009-07-07
  • SQL查詢的底層運行原理深入分析

    SQL查詢的底層運行原理深入分析

    這篇文章主要給大家介紹了關(guān)于SQL查詢的底層運行原理,文中通過實例代碼結(jié)束的非常詳細,對大家學(xué)習(xí)或者使用SQL具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • SQLServer中exists和except用法介紹

    SQLServer中exists和except用法介紹

    大家好,本篇文章主要講的是SQLServer中exists和except用法介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下哦
    2021-12-12
  • Spring集成MyBatis完整實例(分享)

    Spring集成MyBatis完整實例(分享)

    下面小編就為大家?guī)硪黄猄pring集成MyBatis完整實例(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • 由拖庫攻擊談口令字段的加密策略(數(shù)據(jù)庫加密)

    由拖庫攻擊談口令字段的加密策略(數(shù)據(jù)庫加密)

    我不得不慘痛地寫在前面的是,這是一個安全崩盤的時代。過去一年,已經(jīng)證實的遭遇入侵、并導(dǎo)致關(guān)鍵數(shù)據(jù)被竊或者被泄露的公司,包括索尼、世嘉這樣的大型游戲設(shè)備廠商;包括花旗銀行這樣的金融機構(gòu),也包括了RSA這樣的安全廠商
    2012-01-01

最新評論

邹城市| 崇左市| 台北县| 水城县| 望奎县| 温州市| 定南县| 哈尔滨市| 镇远县| 夹江县| 屯门区| 农安县| 丹东市| 乳山市| 阿克| 游戏| 民勤县| 乌兰县| 长寿区| 北票市| 宁明县| 岳西县| 竹溪县| 泰安市| 利川市| 英山县| 武乡县| 元谋县| 翁牛特旗| 郸城县| 新化县| 太湖县| 应城市| 木里| 天等县| 汾西县| 抚州市| 镇雄县| 离岛区| 江川县| 自贡市|