乘风原创程序

  • sql server通过pivot对数据进行行列转换的方法
  • 2020/5/22 9:35:41
  • 脚本:

    /*
    说明: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

    脚本运行结果:

    总结