当前位置: 首页 > news >正文

sql行列转换

  1. 首先我们建立一张表,名为scoreInfo,各个字段的设计如下图,分别是name,course,score,表示姓名,成绩与分数,如图所示。
  2. 2

    我们往表中加入数据,分别添加小明与小花的语文和数学成绩,如图所示。

  3. 3

    接下来,我们要进行行列转换,列应该是name,语文,数学。我们首先要考虑是如何得到列名,我们可以通过分组得到课程名称。如图所示,我们通过分组语句,从查询结果我们可以看出课程名的拼接字符串。

    代码:

    declare @sql varchar(200)
    select @sql=ISNULL(@sql+',','')+course from scoreInfo group by course
    select @sql

    效果:

  4. 4

    接下来,关键的行转列的函数pivot出场了,通过这个函数我们把分数填充到转换的列语文、数学的列值。

    declare @sql varchar(200)
    select @sql=ISNULL(@sql+',','')+course from scoreInfo group by course
    set @sql='select * from scoreInfo pivot(max(score) for course in ('+@sql+')) pivotTable'  
    exec(@sql)
  5. 5

    我们运行后,可以得到行转列的结果,如下图所示。

  6. 6

    通过以上几个步骤,我们就可以轻松的实现行列转换了。同样,我们如果要把列转换成行, 应该怎么做呢?同样我们可以采用unpivot函数轻松实现。

    declare @sql varchar(200)
    select @sql=ISNULL(@sql+',','')+course from scoreInfo group by course
    set @sql='select * from scoreInfo pivot(max(score) for course in ('+@sql+')) pivotTable unpivot(Score for Course in('+@sql+')) unPivotedTable'  
    exec(@sql)

    通过上面的sql语句,如下图所示:

相关文章:

  • 【经验】谈谈办证的那些事,献给那些即将毕业、或孩子上学等朋友
  • Myeclipse 的hadoop环境搭建
  • 数据结构-栈
  • java获取当前计算机网卡MAC地址
  • VMWare网络设置的3中方式(转)
  • 关于在eclipse中使用tomcat的笔记
  • Android设备路径及容量的读取
  • [裴礼文数学分析中的典型问题与方法习题参考解答]4.3.5
  • Linux安装mysql mysql5.5.40 NIOT
  • 构建高效且可伸缩的结果缓存
  • LVS四种负载均衡类型,十种调度方法
  • Skype for Business Server 2015-04-前端服务器-7-部署
  • Rails: No such file or directory - getcwd
  • GitHub 基本常用知识解答
  • Spring+Mybatis+Velocity配置
  • $translatePartialLoader加载失败及解决方式
  • [iOS]Core Data浅析一 -- 启用Core Data
  • 「面试题」如何实现一个圣杯布局?
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • javascript 总结(常用工具类的封装)
  • php的插入排序,通过双层for循环
  • python docx文档转html页面
  • Python打包系统简单入门
  • React-flux杂记
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • Vue UI框架库开发介绍
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 前言-如何学习区块链
  • 如何在GitHub上创建个人博客
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 微信开放平台全网发布【失败】的几点排查方法
  • Python 之网络式编程
  • ​ArcGIS Pro 如何批量删除字段
  • ​iOS安全加固方法及实现
  • ​香农与信息论三大定律
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • #NOIP 2014# day.2 T2 寻找道路
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (¥1011)-(一千零一拾一元整)输出
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (javascript)再说document.body.scrollTop的使用问题
  • (二)Eureka服务搭建,服务注册,服务发现
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (原)Matlab的svmtrain和svmclassify
  • (转)JAVA中的堆栈
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • .apk 成为历史!
  • .NET 8.0 发布到 IIS
  • .NET Framework杂记
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项