婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > SQL行轉列、列轉行的簡單實現

SQL行轉列、列轉行的簡單實現

熱門標簽:怎么申請400熱線電話 ai電話電話機器人 湖南保險智能外呼系統產品介紹 泗洪正規電話機器人找哪家 河北便宜電銷機器人軟件 簡單的智能語音電銷機器人 怎么去開發一個電銷機器人 小程序智能電話機器人 南昌呼叫中心外呼系統哪家好

前言

行列轉換在做報表分析時還是經常會遇到的,今天就說一下如何實現行列轉換吧。

行列轉換就是如下圖所示兩種展示形式的互相轉換

行轉列

假如我們有下表:

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

通過上面 SQL 語句即可得到下面的結果

PIVOT 后跟一個聚合函數來拿到結果,FOR 后面跟的科目是我們要轉換的列,這樣的話科目中的語文、數學、英語就就被轉換為列。IN 后面跟的就是具體的科目值。

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

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

使用 CASE WHEN 可以得到和 PIVOT 同樣的結果,沒有 PIVOT 簡單直觀。

列轉行

假設我們有下表 student1

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

通過 UNPIVOT 即可得到如下結果:

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

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

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。

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

標簽:荊門 柳州 威海 江蘇 景德鎮 瀘州 那曲 淮安

巨人網絡通訊聲明:本文標題《SQL行轉列、列轉行的簡單實現》,本文關鍵詞  SQL,行轉列,列轉,行的,簡單,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SQL行轉列、列轉行的簡單實現》相關的同類信息!
  • 本頁收集關于SQL行轉列、列轉行的簡單實現的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 安泽县| 高要市| 瑞金市| 保靖县| 临沭县| 夏邑县| 兴隆县| 安岳县| 扎赉特旗| 德令哈市| 遂川县| 丹巴县| 石屏县| 武义县| 都昌县| 霞浦县| 沙洋县| 南丰县| 分宜县| 阳城县| 梁山县| 鄂托克旗| 军事| 丽江市| 孝昌县| 清水河县| 杭锦后旗| 兴业县| 修武县| 涞源县| 连江县| 施甸县| 广州市| 罗平县| 喀喇沁旗| 沾化县| 乌苏市| 建湖县| 岳西县| 茌平县| 东至县|