將列值旋轉成列名(即行轉列)是我們在開發中經常會遇到的乙個需要,下面就介紹三種實現思路。
假設我有表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 下面具...