mysql行列轉(zhuǎn)換示例
現(xiàn)把轉(zhuǎn)換方法列舉如下:
?
1、縱表轉(zhuǎn)橫表:
??? 縱表結(jié)構(gòu) TableA?
Name
Course
Grade
張三
語文
75
張三
數(shù)學
80
張三
英語
90
李四
語文
95
李四
數(shù)學
55
?橫表結(jié)構(gòu) TableB
Name
語文
數(shù)學
英語
張三
75
80
90
李四
95
55
0
?
?
方法一:
select Name,
sum(case Course when ‘語文‘ then Grade else 0 end) as 語文,
sum(case Course when ‘數(shù)學‘ then Grade else 0 end) as 數(shù)學,
sum(case Course when ‘英語‘ then Grade else 0 end) as 英語
from TableA
group by Name
?
?
2、橫表轉(zhuǎn)縱表的"SQL"示例
橫表結(jié)構(gòu): TEST_H2Z
????? ID????? 姓名??? 語文??????? 數(shù)學?????? 英語??????
????? 1?????? 張三???? 80???????? 90???????? 70????????????
????? 2?????? 李四???? 90???????? 85???????? 95??????????
????? 3?????? 王五???? 88???????? 75???????? 90??????????
?
轉(zhuǎn)換后的表結(jié)構(gòu):??
????? ID???? 姓名???? 科目???? 成績??
????? 1?????? 張三???? 語文???? 80??
????? 2?????? 張三???? 數(shù)學???? 90??
????? 3?????? 張三???? 英語???? 70??
????? 4?????? 李四???? 語文???? 90??
????? 5?????? 李四???? 數(shù)學???? 80????
????? 6?????? 李四???? 英語???? 99??
????? 7?????? 王五???? 語文???? 85??
????? 8?????? 王五???? 數(shù)學???? 96??
????? 9?????? 王五???? 英語???? 88??
橫表轉(zhuǎn)縱表SQL示例:
SELECT?? 姓名,'語文'?? AS???? 科目,語文?? AS?? 成績?? FROM?? TEST_H2Z?? UNION?? ALL?
SELECT?? 姓名,'數(shù)學'?? AS???? 科目,數(shù)學?? AS?? 成績?? FROM?? TEST_H2Z?? UNION?? ALL?
SELECT?? 姓名,'英語'?? AS???? 科目,英語?? AS?? 成績?? FROM?? TEST_H2Z
ORDER BY 姓名,科目 DESC;
原文鏈接:http://www.cnblogs.com/luluping/archive/2012/07/26/2610705.html