zoukankan      html  css  js  c++  java
  • sqlServer:行列转换之多行转一行

    记得在刚进项目组时候,使用oracle数据库,遇到的第一个难题就是行列转换,哈哈,真是菜的一BI,现在使用sqlServer数据库,又遇到了,记录一下,以备后用和帮助后来者。

    言归正传:

    数据库:sqlServer2008R2 英文版

    1.建表:学生表(姓名,学科,成绩)

    CREATE TABLE teststudent(
        stuname varchar(50) NULL,
        subjects varchar(50) NULL,
        source int NULL
    )
    drop table teststudent ;
    select * from teststudent ;
    delete from teststudent ;

    2.准备数据:

    insert into teststudent(stuname,subjects,source) values('小明','语文',80);
    insert into teststudent(stuname,subjects,source) values('小明','数学',85);
    insert into teststudent(stuname,subjects,source) values('小明','英语',90);
    insert into teststudent(stuname,subjects,source) values('小红','语文',86);
    insert into teststudent(stuname,subjects,source) values('小红','数学',90);
    insert into teststudent(stuname,subjects,source) values('小红','英语',85);
    insert into teststudent(stuname,subjects,source) values('小亮','语文',99);
    insert into teststudent(stuname,subjects,source) values('小亮','数学',99);
    insert into teststudent(stuname,subjects,source) values('小亮','英语',100);

    3.转换:可以采用max()、sum()两种方式

    --方式1:
    select stuname ,
    MAX(case when subjects = '语文' then source else 0 end ) '语文',
    MAX(case when subjects = '数学' then source else 0 end ) '数学',
    MAX(case when subjects = '英语' then source else 0 end ) '英语'
    from teststudent group by stuname ;

    --方式2:
    select stuname ,
        SUM(case when subjects = '语文' then source else 0 end) '语文',
        SUM(case when subjects = '数学' then source else 0 end ) '数学',
        SUM(case when subjects = '英语' then source else 0 end ) '英语'
    from teststudent group by stuname ;

    4.其他待补充

  • 相关阅读:
    Ryzom简易汉化教程
    在Windows上编译运行Ryzom客户端
    在Windows(x86)上编译、配置并运行Ryzom Core(服务器/客户端)
    引擎设计与商业模式
    总结了一下新手学习Windows 8 Metro App 开发的捷径
    开始研究Ryzom Core!
    和Ryzom相关的项目简介
    关于Ryzom游戏开发的路线图
    根据 yyyymmdd格式日期取得当前日期所在周的开始和结束日期
    asp数组中REDIM的用法(动态数组)
  • 原文地址:https://www.cnblogs.com/zhengzeze/p/5584428.html
Copyright © 2011-2022 走看看