unpivot,pivot联合使用示例

类别 上期结转数 本期新增数 应办结数 办结数 本期结转数 办结率
收文     1             43           44   8          36           18.18%
发文     3             28           31   4     27           12.90%
合计     4             71           75   12     63           16%


变成:

类别         收文 发文 合计
上期结转数 1 3   4
本期新增数 43 28 71
应办结数         44 31 75
办结数         8 4 12
本期结转数 36 27 63
办结率         18.18%  12.90% 16%

 

--> 生成测试数据表: @T

DECLARE @T TABLE (类别 VARCHAR(4),上期结转数 INT,本期新增数 INT,应办结数 INT,办结数 INT,本期结转数 INT,办结率 INT)

INSERT INTO @T

SELECT '收文',1,43,44,8,36,18.18 UNION ALL

SELECT '发文',3,28,31,4,27,12.90 UNION ALL

SELECT '合计',4,71,75,12,63,16

 

-->SQL查询如下:

 

SELECT *

FROM @T AS A

    UNPIVOT(数值 FOR 类型 IN([上期结转数],[本期新增数],[应办结数],

                               [办结数],[本期结转数],[办结率])) AS B

    PIVOT(MAX(数值) FOR 类别 IN([收文],[发文],[合计])) AS C;

/*

类型   收文         发文         合计

----------  ----------- ----------- -----------

办结率 18          12          16

办结数 8           4           12

本期结转数 36          27          63

本期新增数 43          28          71

上期结转数 1           3           4

应办结数   44          31          75

 

(6 行受影响)

*/

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值