美文网首页
SQL列转行、行转列

SQL列转行、行转列

作者: _子墨 | 来源:发表于2017-04-28 15:37 被阅读2946次

    笔者前不久终于发布了自己的APP《小印记》,希望读者能前往App Store下载《小印记》支持一下笔者,谢谢!🙂

    《小印记》iOS源码分享--极光推送实践篇
    《小印记》iOS源码分享--自定义弹框篇
    《小印记》源码分享--极光推送服务器篇
    《小印记》iOS源码分享--网络层封装篇


    列传行

    444.png
    -- 列传行
    drop table studentA;
    create table studentA (name varchar(10) ,subject varchar(10) ,score int) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    insert into studentA values ('张三','语文',75),('张三','数学',83),('张三','物理',96);
    insert into studentA values ('李四','语文',74),('李四','数学',84),('李四','物理',95);
    
    select name 姓名,
        max(case subject when '语文' then score end) 语文,
        max(case subject when '数学' then score end) 数学,
        max(case subject when '物理' then score end) 物理
    from studentA
    group by name
    

    行转列

    5555.png
    -- 行转列
    drop table studentB;
    create table studentB (姓名 varchar(10) ,语文 varchar(10) ,数学 varchar(10) ,物理 varchar(10)); -- 不要加引号''
    
    insert into studentB values ('张三',75,83,96),('李四',74,84,95);
    
    select * from (
        select 姓名, '语文' as 科目, 语文 as 分数 from studentB 
        union all
        select 姓名, '数学' as 科目, 数学 as 分数 from studentB
        union all
        select 姓名, '物理' as 科目, 物理 as 分数 from studentB
        ) a
    

    (遇插入数据失败问题,请修改字符集为UTF8)

    WechatIMG138.png

    相关文章

      网友评论

          本文标题:SQL列转行、行转列

          本文链接:https://www.haomeiwen.com/subject/iwxazttx.html