SQL Server基础之行数据转换为列数据
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,准备工作创建表use [test1]gocreate table [dbo].[student]( [id] [int] identity(1,1) not null, [name] [nvarc
千家信息网最后更新 2026年11月01日SQL Server基础之行数据转换为列数据
准备工作
创建表
use [test1]gocreate 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,( ) from database.schema.tablegroup by 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] as , [second pivoted column] as , ... [last pivoted column] as from (
语法解析
非聚合列。
[first pivoted column]
第一列列名。
[second pivoted column]
第二列列名。
[last pivoted column]
最后一列列名。
数据子表。
表别名。
聚合函数。
聚合函数列,用于输出值列,最终输出中返回的列(称为分组列)将对其进行分组。
[
转换列,此列返回的唯一值将成为最终结果集中的字段。
[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 apivot( max(Score) for Project in ([android],[ios],[html5],[.net])) as border by b.name desc
示例结果
转换前
转换后
注意事项
1、如果输出列名不能在表转换列中,则不会执行任何计算。
2、输出的所有列的列名的数据类型必须一致。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。
输出
语法
数据
函数
示例
张三
李四
结果
表达式
专列
内容
分组
学习
工作
复杂
一致
一行
事项
价值
别名
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网与科技
广州紫鲸互联网科技有限公司
中国互联网科技工作委员会毛军
科技股互联网
A股互联网金融科技公司
互联网科技资迅
互联网科技开发公司
大白互联网科技
多迪互联网科技有限公司
互联网科技大会案例
玖二柒互联网科技公司待遇
团飞科技与伯堂互联网服务平台
中化能源互联网科技招聘
岳阳华臻互联网科技有限公司
苏州铭阳互联网科技有限公司
互联网营销推广黑科技
厦门江牛科技互联网
互联网安防科技感
工业互联网科技成果转化
科技和互联网行业的特点
上海卓越科技互联网
互联网科技金融
易互联网科技有限公司
互联网科技公司发展
华宇互联网科技
顺网科技2021年互联网排名
受益于互联网科技的高速发展
区块链结合互联网科技
广州梦谷互联网科技有限公司领导
伍佰万互联网科技是干嘛的