• SQL行转列


    /* 普通行列转换 (爱新觉罗.毓华 2007-11-18于海南三亚)

    假设有张学生成绩表(tb)如下:

    Name Subject Result

    张三 语文  74

    张三 数学  83

    张三 物理  93

    李四 语文  74

    李四 数学  84

    李四 物理  94 */

     -------------------------------------------------------------------------

    /* 想变成 姓名 语文 数学 物理

    ---------- ----------- ----------- -----------

     李四 74 84 94

    张三 74 83 93

    */

    create table tb

     (

     Name varchar(10) ,

    Subject varchar(10) ,

     Result int

    )

    insert into tb(Name , Subject , Result) values('张三' , '语文' , 74)

     insert into tb(Name , Subject , Result) values('张三' , '数学' , 83)

     insert into tb(Name , Subject , Result) values('张三' , '物理' , 93)

    insert into tb(Name , Subject , Result) values('李四' , '语文' , 74)

     insert into tb(Name , Subject , Result) values('李四' , '数学' , 84)

     insert into tb(Name , Subject , Result) values('李四' , '物理' , 94)

     go

    --静态SQL,指subject只有语文、数学、物理这三门课程。

     select name 姓名,

    max(case subject when '语文' then result else 0 end) 语文,

    max(case subject when '数学' then result else 0 end) 数学,

     max(case subject when '物理' then result else 0 end) 物理

    from tb group by name

    /* 姓名 语文 数学 物理

    ---------- ----------- ----------- -----------

     李四 74 84 94

    张三 74 83 93

    */

    --动态SQL,指subject不止语文、数学、物理这三门课程。

    declare @sql varchar(8000) set @sql = 'select Name as ' + '姓名' select @sql = @sql + ' ,

    max(case Subject when ''' + Subject + ''' then Result else 0 end) [' + Subject + ']'

    from (select distinct Subject from tb) as a set @sql = @sql + ' from tb group by name'

    exec(@sql)

    /* 姓名 数学 物理 语文

     ---------- ----------- ----------- -----------

    李四 84 94 74

    张三 83 93 74

     */

  • 相关阅读:
    SQL Server循环插入
    【转】Entity Framework 6 Code First 实践系列(1):实体类配置-根据依赖配置关系和关联
    【转】iis7下站点日志默认位置
    如何设置输入IP地址就直接访问到某一个网站
    面向接口编程
    Lambda表达式
    关于单体化和属性文件的说明
    cesium-长度测量和面积测量
    Cesium官方教程13--Cesium和Webpack
    Cesium官方教程12--材质(Fabric)
  • 原文地址:https://www.cnblogs.com/something/p/2233791.html
Copyright © 2020-2023  润新知