博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sql行列转换
阅读量:7077 次
发布时间:2019-06-28

本文共 935 字,大约阅读时间需要 3 分钟。

  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 courseset @sql='select * from scoreInfo pivot(max(score) for course in ('+@sql+')) pivotTable unpivot(Score for Course in('+@sql+')) unPivotedTable'  exec(@sql)

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

转载地址:http://rxdml.baihongyu.com/

你可能感兴趣的文章
中生代嘉年华 | OKR管理
查看>>
详解让乌克兰总理都“哭泣”的勒索病毒,你到底要不要怕
查看>>
发展人工智能让用户丧失隐私?库克说不
查看>>
智能家居热潮引来资本大佬
查看>>
经济学人:富士康收购夏普风险不小
查看>>
视频会议新格局确立 云计算开启技术叠加时代
查看>>
云存储安防领域应用面广 系视频监控中不可或缺的一环
查看>>
观点:苹果需要一位像微软纳德拉似的CEO
查看>>
【云栖精选7月刊】抛开晦涩的算法、模型,让我们来谈谈互联网架构
查看>>
自动化测试框架PhoenixAutotest入门
查看>>
2016中国容器技术调研报告:逾八成用户选择拥抱
查看>>
云计算工程师的工作需要技术和技能相结合
查看>>
苹果连续四年成为全球最具价值品牌 前十有六家科技公司
查看>>
芮勇出任联想CTO,阿里巴巴获CIKM Cup冠军|AI科技评论周刊
查看>>
德国食品溯源安全体系浅析
查看>>
ACS 2017中国汽车CIO峰会10月强势登陆上海
查看>>
哪些植物最"吸毒"?这份植物“吸毒”手册千万要收好!
查看>>
修补网络安全人才缺口要多少钱?美国国家标准及技术研究:36万美元
查看>>
苹果新总部依旧未完工,4月之前还有很多要做
查看>>
新疆今年不再新增风光电年度计划
查看>>