mysql中行转列
1.使用case when then else end
select case when stuid=1002 then "李四" #如果stuid=1002則結(jié)果為李四 else "不是李四" #否則輸出這個結(jié)果 end as "是否名字為李四" #end結(jié)束標志 必須要有 將其單獨作為一個字段名稱 from student; #總的意思是 在student表中如果stuid是1002的則返回"李四",否則返回值"不是李四"結(jié)果為:
?
這是原來表的數(shù)據(jù)
select stuid ,stunm, Max(CASE WHEN coursenm ="大學(xué)語文" THEN scores ELSE 0 END ) as "大學(xué)語文", Max(CASE WHEN coursenm ="新視野英語" THEN scores ELSE 0 END ) as "新視野英語", Max(CASE WHEN coursenm ="離散數(shù)學(xué)" THEN scores ELSE 0 END ) as "離散數(shù)學(xué)", Max(CASE WHEN coursenm ="概率論與數(shù)理統(tǒng)計" THEN scores ELSE 0 END ) as "概率論與數(shù)理統(tǒng)計", Max(CASE WHEN coursenm ="線性代數(shù)" THEN scores ELSE 0 END ) as "線性代數(shù)", Max(CASE WHEN coursenm ="高等數(shù)學(xué)(一)" THEN scores ELSE 0 END ) as "高等數(shù)學(xué)(一)", Max(CASE WHEN coursenm ="高等數(shù)學(xué)(二)" THEN scores ELSE 0 END ) as "高等數(shù)學(xué)(二)" from rowtocol GROUP BY stuid;?
---------------------------------------------------2020.4.11分割線-----------------------------------------------------------------------------------------
列轉(zhuǎn)行:
select name,
max(case when subject="語文"
then score end)as 語文,
max(case when subject="數(shù)學(xué)"
then score end)as 數(shù)學(xué),
max(case when subject="英語"
then score end)as 英語
from test
group by name;
行轉(zhuǎn)列:
select name,語文 as score , '語文成績' subject from test1
union
select name,數(shù)學(xué) as score , '數(shù)學(xué)成績' subject from test1
UNION
select name,英語 as score , '英語成績' subject from test1;
?
原來以為可以多水一篇文章呢
總結(jié)
- 上一篇: 在Windows下为PHP安装redis
- 下一篇: 数据库中Schema(模式)概念的理解