一个SQL行列转换的例子

假设有张OS统计表(OS_detail)如下:

deptpc_nampc_typepc_OSpc_qty
人事部PER01DELL GX260WinXP1
人事部PER02DELL GX260Win2K1
工程部ME01DELL GX260Win2K1
工程部ME02DELL GX260Win981
工程部ME03DELL GX520WinXP1
生产部PRD01810msiWin981
生产部PRD02DELL GX280WinXP1
行政部ADM01DELL GX270Win2K1
行政部ADM02Dell Dimension 4100Win2K1
采购部PUR01COMPAQ DESKPROWin981
采购部PUR02COMPAQ DESKPROWin981
会计部ACT01COMPAQ DESKPROWin981
会计部ACT02DELL GX270WinXP1
会计部ACT03COMPAQ DESKPROWin981
ITEDP01DELL GX260Win2K1

想变成如下:

deptWin2KWin98WinXP
采购部NULL2NULL
IT1NULLNULL
工程部111
会计部NULL21
人事部1NULL1
生产部NULL11
行政部2NULLNULL

 

declare   @sql   varchar ( 4000
set   @sql   =   ' select dept '  
select   @sql   =   @sql   +   ' ,sum(case pc_OS when  ''' + pc_OS + '''  then pc_qty end) [ ' + pc_OS + ' ] '   from  ( select   distinct  pc_OS  from  OS_detail)  as  a 
select   @sql   =   @sql + '  from OS_detail group by dept '   
exec ( @sql )
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值