刺球網絡安全社區

 找回密碼
 立即注冊

新浪微博登陸

只需一步, 快速開始

QQ登錄

只需一步,快速開始

搜索
查看: 1879|回復: 2
打印 上一主題 下一主題

【轉】mysql sql語句:行轉列問題

[復制鏈接]

 成長值: 216479

新浪微博達人勛

  • TA的每日心情

    2019-8-22 09:24
  • 簽到天數: 23 天

    [LV.4]偶爾看看III

    1134

    主題

    1717

    帖子

    37萬

    積分

    管理員

    技術指數:★★★★★

    Rank: 9Rank: 9Rank: 9

    積分
    376223

    社區QQ達人最佳新人活躍會員熱心會員推廣達人宣傳達人灌水之王突出貢獻優秀版主榮譽管理論壇元老

    QQ
    跳轉到指定樓層
    樓主
    發表于 2018-9-21 03:08:12 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
    存在表score,記錄學生的考試成績,如下圖所示:
                   
    現要求以 學生姓名,語文,數學,英語 這種格式顯示學生成績,如下圖所示
                   
    具體步驟如下:
    1、首先,使用case when函數輸出單個課程的成績
    case when course='語文' then score end as 語文case when course='數學' then score end as 數學case when course='英語' then score end as 英語
    sql語句:
    select name ,case when course='語文' then score end as 語文,case when course='數學' then score end as 數學,case when course='英語' then score end as 英語  from score;

    輸出結果如下圖所示:
                   
    2、使用group by 和sum,去掉NULL得出課程的成績
    sql語句:
    select name ,sum(case when course='語文' then score end) as 語文,sum(case when course='數學' then score end )as 數學,sum(case when course='英語' then score end )as 英語from score group by name;

    輸出結果如下圖所示
                   
    就得出行轉列的輸出結果了
    總結:在具體的生活場景中,使用學生姓名,課程1,課程2,課程3……的表結構是不太合理的,比如選修課,不可能每個學生都選一樣的課程,這種結構會存在浪費存儲空間的情況,比較好的做法就是一行表示一個學生的某個課程的成績,再使用行轉列方法輸出想要的成績結構。



    0 0
    [發帖際遇]: 刺球 發帖時在路邊撿到 1 金球,偷偷放進了口袋. 幸運榜 / 衰神榜
    樓主熱帖
    分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
    收藏收藏 轉播轉播 支持支持 反對反對
    帖子永久地址: 

    刺球網絡安全社區 - 論壇版權1、本主題所有言論和圖片純屬會員個人意見,與本論壇立場無關
    2、本站所有主題由該帖子作者發表,該帖子作者與刺球網絡安全社區享有帖子相關版權
    3、其他單位或個人使用、轉載或引用本文時必須同時征得該帖子作者和刺球網絡安全社區的同意
    4、帖子作者須承擔一切因本文發表而直接或間接導致的民事或刑事法律責任
    5、本帖部分內容轉載自其它媒體,但并不代表本站贊同其觀點和對其真實性負責
    6、如本帖侵犯到任何版權問題,請立即告知本站,本站將及時予與刪除并致以最深的歉意
    7、刺球網絡安全社區管理員和版主有權不事先通知發貼者而刪除本文

    分享到新浪微博
    回復

    使用道具 舉報

    您需要登錄后才可以回帖 登錄 | 立即注冊 新浪微博登陸

    本版積分規則

    ?
     
     
    技術支持
    點擊這里給我發消息
    在線客服
    點擊這里給我發消息
    點擊這里給我發消息
    刺球網安群①:
    刺球網安社區交流群①
    在線時間:
    8:30-21:00
     

    刺球網安 渝公網安備 50011402500080號 ( 渝ICP備15001097號-1 )申請友鏈|小黑屋| 刺球網絡安全社區

    GMT, 2020-4-4 07:33 , Processed in 0.162514 second(s), 43 queries , Gzip On.

    Powered by 刺球網安

    © 2014-2025

    快速回復 返回頂部 返回列表
    福彩3d最新开奖佶息