データベースカラムスイッチは、カラムの行を回します
テーブルを作成します。
#建表语句 CREATE TABLE `TEST_TB_GRADE`( ` ID`のINT(10)NOT NULL AUTO_INCREMENTを、 ` USER_NAME ` VARCHAR(20)DEFAULTの NULL 、 `COURSE`のVARCHAR(20)DEFAULTの NULL 、 ` SCORE`のフロート DEFAULT ' 0 ' 、 PRIMARY KEY ( `ID`) )ENGINE = InnoDBのAUTO_INCREMENT = 1 DEFAULT CHARSET= Utfa8。
データを追加します
#データの追加 INSERT INTO TEST_TB_GRADE(USER_NAME、COURSE、SCORE) の値 ( "ジョー・スミス"、 "数学"、34 )、( "ジョー・スミス"、 "中国"、58 )、 ("ジョー・スミス"、 "英語"を58 )、 ("ジョン・ドウ"、 "数学"、45 )、 ("ジョン・ドウ"、 "中国"、87 )、 ("ジョン・ドウ"、 "英語"、45 )、 ("王5"、「数学" 76 )、 ("王5 ""中国" 34 )、 ("王5 ""英語」、89);
SQLのカラムスイッチ
#列は切り替える SELECT USER_NAME 、 MAX(CASEコース、' 数学' THENスコアELSE 0 END )数学を、 MAX(CASEコース、' 言語' THENスコアELSE 0 END )言語、 MAX(CASEコース、' 英語' THENスコアELSE 0 END )英語 FROM test_tb_grade GROUP BY USER_NAME ;
カラムスイッチの変更
ライン転送コラム
結果テーブル結果へのデータ最初に変換する必要があります
結果を表#テーブルを作成する CREATE TABLE `result`( ` USER_NAME ` VARCHAR(20である)のDEFAULT NULL 、 ` COURSE` VARCHAR(20である)のDEFAULT NULL 、 `SCORE` フロート DEFAULT ' 0 ' )ENGINE = InnoDBはAUTO_INCREMENT = 1 DEFAULT CHARSET = UTF8 ; テーブルに転送されたデータに#クエリの結果 INSERT INTOが生じる SELECT USER_NAME 、 MAXは(CASEコース、WHEN ' 数学' THENスコアELSE 0 END )数学、 MAX(CASEコース、' 言語' THENスコアELSE 0 END )言語、 MAX(CASEコース、' 英語' THENスコアELSE 0 END )英語 FROM test_tb_grade GROUP BY USER_NAME ;
この後、列行を回します
#ラインスイッチ列 SELECT USER_NAME、「言語」コース、MAX(言語)ASスコアからの結果GROUPの ことで USER_NAME 連合の ALL SELECT USER_NAME、「数学」コース、MAX(数学)ASスコアからの結果 GROUP によって USER_NAME 連合の ALL SELECT USER_NAME、" 英語"コース、MAX(英語)ASスコアから結果 GROUP によって USER_NAME
変更点は、行、列を回します