文中所用資料庫格式如下
查詢所有學生 ORACLE開發,J2EE從入門到精通,EJB及設計模式 這三門課程的分數
SELECT
sc.grade,
tc.cname,
sc.sno
FROM
t_score sc
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
結果
将課程名字和成績放在一列中,使用group_concat 函數
-- 兩列合并為一列
SELECT
sno,
GROUP_CONCAT( cname, ':', grade ) AS 成績
FROM
t_score sc
JOIN t_course co ON co.cno = sc.cno
GROUP BY
sno
得到的結果如下
也可以使用concat(比較适用于姓和名字)
-- 兩列合為一列
select concat(cno,cname) from t_course
标簽:grade,合并,t1,轉列,cname,mysql,sc,cno,tc
來源: https://blog.csdn.net/Zhang_0507/article/details/106589208