数据库 发布日期:2024/12/26 浏览次数:1
脚本:
/* 说明:sql server如何通过pivot对数据进行行列转换 */ create table #t ( [员工工号] nvarchar(50), [员工姓名] nvarchar(50), [月份] nvarchar(50), [工资] int ) insert into #t values(N'01', N'张三', N'2020年01月', 2400) ,(N'02', N'李四', N'2020年01月', 3000) ,(N'01', N'张三', N'2020年02月', 2400) ,(N'02', N'李四', N'2020年02月', 3000) ,(N'03', N'王五', N'2020年02月', 5500) ,(N'01', N'张三', N'2020年03月', 2400) ,(N'02', N'李四', N'2020年03月', 1200) ,(N'03', N'王五', N'2020年03月', 5500) ,(N'04', N'赵六', N'2020年03月', 30000) ,(N'01', N'张三', N'2020年04月', 3000) ,(N'03', N'王五', N'2020年04月', 5500) ,(N'04', N'赵六', N'2020年04月', 30000) --行列转换前的源数据 select * from #t --行列转换后的目标数据 select [员工工号], [员工姓名] , [2020年01月], [2020年02月], [2020年03月], [2020年04月] from #t D pivot(max([工资]) for [月份] in ([2020年01月], [2020年02月], [2020年03月], [2020年04月])) Q order by [员工工号] drop table #t
脚本运行结果:
总结