行轉(zhuǎn)列容易理解:依次查詢所需要的列用union連接
列轉(zhuǎn)化行這個用sum(case ?when ?then ) 或者max(case when then ?) 結(jié)構(gòu)選取特定行的數(shù)據(jù)作為列數(shù)據(jù)!
列轉(zhuǎn)化為行

數(shù)據(jù)表

結(jié)果表
SELECT ?user_name ,
MAX(CASE course ?WHEN'數(shù)學(xué)' ?THEN ?score ? ELSE 0 END) 數(shù)學(xué),
MAX(CASEcourseWHEN'語文'THENscoreELSE0END) 語文,
MAX(CASEcourseWHEN'英語'THENscoreELSE0END) 英語
FROMtest_tb_grade
GROUP ? BY ? USER_NAME;
行轉(zhuǎn)化為列

數(shù)據(jù)表

結(jié)果表
select user_name,'語文'COURSE , CN_SCORE as SCORE from test_tb_grade2
union
select user_name,'數(shù)學(xué)'COURSE, MATH_SCORE as SCORE from test_tb_grade2
union
select user_name,'英語'COURSE, EN_SCORE as SCORE from test_tb_grade2
order by user_name,COURSE;