91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

河西区| 尼木县| 沂源县| 体育| 城市| 舟山市| 图木舒克市| 普洱| 蓝山县| 金华市| 南郑县| 辉县市| 香河县| 太和县| 台中县| 鸡泽县| 富顺县| 呼图壁县| 长岭县| 申扎县| 扎赉特旗| 舞钢市| 镇雄县| 城固县| 静宁县| 安宁市| 邛崃市| 新密市| 衡南县| 衡阳县| 仙居县| 河西区| 云南省| 东乡县| 乐安县| 阿勒泰市| 佛坪县| 钟山县| 上思县| 双城市| 兴文县|