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