sql 行列转换

    技术2025-04-14  35

    数据库中tb表格如下月份 工资 福利 奖金1月 100 200 3002月 110 210 3103月 120 220 3204月 130 230 330我想得到的结果是项目 1月 2月 3月 4月工资 100 110 120 130福利 200 210 220 230奖金 300 310 320 330就是说完全把表格的行列颠倒

     

    SQL code -- SQL2005静态写法 -- 创建测试数据 create table Test(月份 varchar ( 4 ), 工资 int , 福利 int , 奖金 int ) insert Test select ' 1月 ' , 100 , 200 , 300 union all select ' 2月 ' , 110 , 210 , 310 union all select ' 3月 ' , 120 , 220 , 320 union all select ' 4月 ' , 130 , 230 , 330 go SELECT * FROM ( SELECT 考核月份,月份,金额 FROM ( SELECT 月份, 工资, 福利, 奖金 FROM Test) p UNPIVOT (金额 FOR 考核月份 IN (工资, 福利, 奖金)) AS unpvt ) T PIVOT ( MAX (金额) FOR 月份 in ( [ 1月 ] , [ 2月 ] , [ 3月 ] , [ 4月 ] )) AS pt drop table test /* 项目 1月 2月 3月 4月 -------- ------ -------- -------- -------- 奖金 300 310 320 330 工资 100 110 120 130 福利 200 210 220 230 (3 行受影响) */
    最新回复(0)