SQL Server基础之行数据转换为列数据
更新时间:2019年08月06日 11:36:04 作者:小子pk了
这篇文章主要给大家介绍了关于SQL Server基础之行数据转换为列数据的相关资料,文中通过示例代码
SQL Server基础之行数据转换为列数据 更新时间:2019年08月06日 11:36:04 作者:小子pk了 这篇文章主要给大家介绍了关于SQL Server基础之行数据转换为列数据的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用SQL Server具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧 准备工作 创建表 use [test1] go create table [dbo].[student]( [id] [int] identity(1,1) not null, [name] [nvarchar](50) null, [project] [nvarchar](50) null, [score] [int] null, constraint [pk_student] primary key clustered ( [id] asc )with (pad_index = off, statistics_norecompute = off, ignore_dup_key = off, allow_row_locks = on, allow_page_locks = on) on [primary] ) on [primary] go 插入数据 insert into test1.dbo.student(name,project,score) values('张三','android','60'), ('张三','ios','70'), ('张三','html5','55'), ('张三','.net','100'), ('李四','android','60'), ('李四','ios','75'), ('李四','html5','90'), ('李四','.net','100'); 使用Case When和聚合函数进行行专列 语法 select column_name, ( 语法解析 column_name 数据列列名 aggregation function 聚合函数,常见的有:sum,max,min,avg,count等。 case when expression case when表达式 示例 select name, max(case project when 'android' then score end) as '安卓', max(case project when 'ios' then score end) as '苹果', max(case project when 'html5' then score end) as 'html5', max(case project when '.net' then score end) as '.net' from [test1].[dbo].[student] group by name 示例结果 转换前 转换后 使用PIVOT进行行专列 PIVOT通过将表达式中一列中的唯一值转换为输出中的多个列来旋转表值表达式。并PIVOT在最终输出中需要的任何剩余列值上运行聚合,PIVOT提供比一系列复杂的SELECT...CASE语句指定的语法更为简单和可读的语法,PIVOT执行聚合并将可能的多行合并到输出中的单个行中。 语法 select 语法解析 非聚合列。 [first pivoted column] 第一列列名。 [second pivoted column] 第二列列名。 [last pivoted column] 最后一列列名。 数据子表。 表别名。 聚合函数。 聚合函数列Mssq类型转换函数,用于输出值列,最终输出中返回的列(称为分组列)将对其进行分组。 [] 转换列,此列返回的唯一值将成为最终结果集中的字段。 [first pivoted column], [second pivoted column], ... [last pivoted column] 数据行中每一行行要转换的列名。 排序规则。 示例 select b.Name,b.[android],b.[ios],b.[html5],b.[.net] from (select Name,Project,Score from [test1].[dbo].[student]) as a pivot ( max(Score) for Project in ([android],[ios],[html5],[.net]) ) as b order by b.name desc 示例结果 转换前 转换后 注意事项 1、如果输出列名不能在表转换列中,则不会执行任何计算。 2、输出的所有列的列名的数据类型必须一致。 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。 (编辑:武汉站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |