原表:
創新互聯堅持“要么做到,要么別承諾”的工作理念,服務領域包括:做網站、成都網站設計、企業官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯網時代的北流網站設計、移動媒體設計的需求,幫助企業找到有效的互聯網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!
?
1
2
3
4
5
6
7
8
9
10
11
12
表名 :user
----------------------------------------
name | course | grade
----------------------------------------
zhangsan | Java | 70
----------------------------------------
zhangsan | C++ | 80
----------------------------------------
lisi | java | 90
----------------------------------------
lisi | C# | 60
----------------------------------------
用一條 SQL 語句得到如下形式:
?
1
2
3
4
5
6
7
----------------------------------------
name | java | C++ | C#
----------------------------------------
zhangsan | 70 | 80 | null
----------------------------------------
lisi | 90 | null | 60
就是一個動態的行列轉換
CREATE TABLE `c_wssb_zz` (
`aa011` varchar(10) default NULL,
`aa001` varchar(20) default NULL,
`aa014` varchar(20) default NULL,
`aa015` varchar(200) default NULL,
`aab001` varchar(20) default NULL,
`aa010` varchar(30) default NULL,
`aae216` date default NULL,
`aa013` varchar(3) default NULL,
`aa016` varchar(10) default NULL,
`aae218` date default NULL,
`aab034` varchar(20) default NULL,
`aab901` varchar(255) default NULL
)
加入這是要轉換的表,表名不確定,作為一個參數, aab001、AA011這兩個也不確定,也是參數,顯示的結果把AA014這一列的內容橫過來內容,對應AA015, 最后形成的數據格式如下
AAB034,AA011,AA001,AAB001,max(case when aa014='col1' then aa015 else '' end)as col1,max(case when aa014='col2' then aa015 else '' end)as col2,....max(case when aa014='colN' then aa015 else '' end)as colN,AAE216,AAE218,AA013,AA016
CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END 在第一個方案的返回結果中, value=compare-value。而第二個方案的返回結果是第一種情況的真實結果。如果沒有匹配的結果值,則返回結果為ELSE后的結果,如果沒有ELSE 部分,則返回值為 NULL。
mysql SELECT CASE 1 WHEN 1 THEN 'one'
- WHEN 2 THEN 'two' ELSE 'more' END;
- 'one'
mysql SELECT CASE WHEN 10 THEN 'true' ELSE 'false' END;
- 'true'
mysql SELECT CASE BINARY 'B'
- WHEN 'a' THEN 1 WHEN 'b' THEN 2 END;
- NULL
你用case when 函數試試。
打字不易,如滿意,望采納。
復盤一下前兩天MySQL的一道筆試題。
建表語句為:
這是典型的行轉列操作。方法有以下兩種:
注意:max() 是為了能夠使用 group by 根據 id 進行分組,因為每一個 id 對應的course = '語文' 的記錄只有一條,所以 max() 的值就等于對應那一條記錄的 score 的值。 因此sum()、min()、avg()等聚合函數都可以達到行轉列的效果。
若要實現對每一列也求和,可以使用with rollup直接生成結果。
分享題目:mysql怎么轉換行列 mysql如何行轉列
網頁路徑:http://m.newbst.com/article30/dodjoso.html
成都網站建設公司_創新互聯,為您提供云服務器、企業建站、網站維護、網站設計公司、做網站、網站制作
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯