SQL行轉列的實現

2021-09-24 14:10:54 字數 835 閱讀 9788

將列值旋轉成列名(即行轉列)是我們在開發中經常會遇到的乙個需要,下面就介紹三種實現思路。

假設我有表tb_score且表中資料如下圖:

行轉列之後的效果如下圖:

方式一:使用靜態sql

select user_name 姓名,

sum(case course when '語文' then score else 0 end) 語文,

sum(case course when '數學' then score else 0 end) 數學,

sum(case course when '英語' then score else 0 end) 英語

from tb_score

group by user_name

方式二:使用pivot

select * from

( select user_name as 姓名,course,score

from tb_score

) test

pivot(sum(score) for course in (語文,數學,英語)) pvt

(mysql不支援pivot)

方式三:使用儲存過程

關於行轉列sql的實現

最近業務需求經常會遇到行轉列的情況出現。個人也是最近接觸到,總結了兩種常用方法,邏輯也非常好理解。之前在網上也看到了不少其他oracle行轉列的方法,有些是oracle特有的函式,放到其他資料庫未必支援。下來我們看兩個簡單,函式經常會使用到的版本。1.建立測試表 create table cc st...

sql的行轉列

在弄資料包表的時候,我們常常會用到這個需求。在mysql中行轉列 新建乙個表,學生名字,課程,分數 drop table if exists student create table student username varchar 20 subjects varchar 20 score int ...

SQL 行轉列查詢的簡易實現

開發中難免遇到一些非常靈活的設計,比如對sql的行轉列進行業務資料展現的.最近在做系統設計的時候設計了乙個公共物件的擴充套件表,然後需要實現不同業務物件的組合查詢,因此借鑑了以前經典的學生科目成績行轉列的案例 在此自己做了修正,以供分享.先曬圖說效果 1 表的原始資料 2 轉換後的資料 ok 下面具...