中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在SQL中實現行轉列和列轉行

發布時間:2021-05-27 16:30:28 來源:億速云 閱讀:276 作者:Leah 欄目:數據庫

怎么在SQL中實現行轉列和列轉行?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

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

怎么在SQL中實現行轉列和列轉行

行轉列

假如我們有下表:

怎么在SQL中實現行轉列和列轉行

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

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

怎么在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

怎么在SQL中實現行轉列和列轉行

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

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

怎么在SQL中實現行轉列和列轉行

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

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

關于怎么在SQL中實現行轉列和列轉行問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

sql
AI

蕉岭县| 乌鲁木齐县| 永靖县| 霍邱县| 南平市| 鹿泉市| 成都市| 柳河县| 会昌县| 天水市| 沁水县| 泽州县| 台中市| 青龙| 阿勒泰市| 遂宁市| 宁阳县| 克什克腾旗| 土默特左旗| 玉田县| 大渡口区| 湖南省| 南安市| 泊头市| 五华县| 乌兰察布市| 张掖市| 玉龙| 顺昌县| 宣汉县| 景东| 桦甸市| 宜黄县| 邹城市| 云阳县| 小金县| 团风县| 茂名市| 广昌县| 屏边| 名山县|