mysql 行轉列和合併列

2021-10-06 21:25:08 字數 1485 閱讀 3511

文中所用資料庫格式如下

join t_course tc on sc.cno = tc.cno where cname='oracle開發' or cname='j2ee從入門到精通' or cname='ejb及設計模式』

我們查詢出來的結果如下

要把它從行轉為列,sql 如下

select

t1.sno,

max( case t1.cname when 'oracle開發' then t1.grade else 0 end ) oracle開發,

max( case t1.cname when 'j2ee從入門到精通' then t1.grade else 0 end ) j2ee從入門到精通,

max( case t1.cname when 'ejb及設計模式' then t1.grade else 0 end ) ejb及設計模式

from

( select

sc.grade,

tc.cname,

sc.sno

from

t_score sc

join t_course tc on sc.cno = tc.cno

) t1

group by

t1.sno

結果

-- 兩列合併為一列

select

sno,

group_concat( cname, ':', grade ) as 成績

from

t_score sc

join t_course co on co.cno = sc.cno

group by

sno

得到的結果如下

也可以使用concat(比較適用於姓和名字)

-- 兩列合為一列 

mysql 動態行轉列 MySQL行轉列

比如乙個單子,多個收據單用逗號隔開,怎麼把這乙個單子所有收據單獨展示出來,行轉成列呢?方法一 這裡需要用到迴圈,首先建立乙個1 10的序列 select rownum rownum 1 as seq from select rownum 0 r,bills limit 0,10 其次依次運用 sub...

GridView 合併列 行類

using system using system.collections.generic using system.linq using system.web using system.data using system.web.ui.webcontrols gridviewmergecell 合...

mysql行轉列 subs mysql 行轉列

存在表score,記錄學生的考試成績,如下圖所示 現要求以 學生姓名,語文,數學,英語 這種格式顯示學生成績,如下圖所示 具體步驟如下 1 首先,使用case when函式輸出單個課程的成績 case when course 語文 then score end as 語文 case when cou...