本文主要是介绍SQL SERVER 行列转换(2)——PIVOT、UNPIVOT 转换,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
上篇博客介绍了静态方式的行列转换,这次介绍一下利用SQL SERVER 函数实现的行列转换,行转列测试数据同之前的一样:
--测试数据
if not object_id(N'Tempdb..#T') is null drop table #T
Go
Create table #T([Name] nvarchar(22),[Subject] nvarchar(22),[Score] int)
Insert #T
select N'李四',N'语文',60 union all
select N'李四',N'数学',70 union all
select N'李四',N'英语',80 union all
select N'张三',N'语文',90 union all
select N'张三',N'数学',80 union all
select N'张三',N'英语',70
Go
--测试数据结束
利用PIVOT方法实现行转列的形式:
SELECT *
FROM #T PIVOT
( MAX(Score) FOR Subject IN ( [语文], [数学], [英语] ) ) AS T
结果如下:
列转行测试数据:
--测试数据
if not object_id(N'Tempdb..#T') is null drop table #T
Go
Create table #T([姓名] nvarchar(22),[语文] int,[数学] int,[英语] int)
Insert #T
select N'李四',60,70,80 union all
select N'张三',90,80,70
Go
--测试数据结束
利用UNPIVOT的方式实现列转行:
SELECT *
FROM #T UNPIVOT
( Score FOR Subject IN ( 语文, 数学, 英语 ) ) P
结果如下:
以上我们利用PIVOT、UNPIVOT实现了行列转换。
这篇关于SQL SERVER 行列转换(2)——PIVOT、UNPIVOT 转换的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!