• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    sqlserver下将数据库记录的列记录转换成行记录的方法
    假设有张学生成绩表(tb)如下:
    Name Subject Result
    张三 语文  74
    张三 数学  83
    张三 物理  93
    李四 语文  74
    李四 数学  84
    李四 物理  94
    想变成

    姓名 语文 数学 物理
    ---------- ----------- ----------- -----------
    李四 74 84 94
    张三 74 83 93
    SQL 语句如下:
    复制代码 代码如下:

    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

    --动态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)
    您可能感兴趣的文章:
    • SQL Server将一列的多行内容拼接成一行的实现方法
    • SQLServer行转列实现思路记录
    • Sql Server 2000 行转列的实现(横排)
    • sqlserver2005 行列转换实现方法
    • sqlserver 行列互转实现小结
    • SQLServer行列互转实现思路(聚合函数)
    • SQL Server行转列的方法解析
    • SQL Server基础之行数据转换为列数据
    上一篇:SQL Server本地时间和UTC时间的相互转换实现代码
    下一篇:SQL Server 聚集索引和非聚集索引的区别分析
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    sqlserver下将数据库记录的列记录转换成行记录的方法 sqlserver,下,将,数据库,记录,