SQL中列转行

     表结构:

        

    结果:

   

 

  最近在项目中的一个列转行问题,在这里记录下来!遇到这个问题的园友修改修改可以直接拿走!!

   

View Code
create table  #tempzjl  (realname varchar(50),hour2 INT default(0),connectcount INT default(0))
  
insert into #tempzjl
select [RealName] as [RealName],datepart(hh,ConnectTime) as hour2,COUNT(isnull(ConnectTime,0)) as ConnectCount
        from GetSupportorView 
        group by datepart(hh,ConnectTime),[RealName]

insert into #tempzjl (realname,hour2,connectcount) 
select #tempzjl.realname,-1,sum(connectcount) from #tempzjl group by #tempzjl.realname

SELECT 
      realname, 
      MAX(CASE hour2 WHEN 1 THEN connectcount ELSE 0 END) AS '1',
      MAX(CASE hour2 WHEN 2 THEN connectcount ELSE 0 END) AS '2',
      MAX(CASE hour2 WHEN 3 THEN connectcount ELSE 0 END) AS '3',
      MAX(CASE hour2 WHEN 4 THEN connectcount ELSE 0 END) AS '4',
      MAX(CASE hour2 WHEN 5 THEN connectcount ELSE 0 END) AS '5',
      MAX(CASE hour2 WHEN 6 THEN connectcount ELSE 0 END) AS '6',
      MAX(CASE hour2 WHEN 7 THEN connectcount ELSE 0 END) AS '7',
      MAX(CASE hour2 WHEN 8 THEN connectcount ELSE 0 END) AS '8',
      MAX(CASE hour2 WHEN 9 THEN connectcount ELSE 0 END) AS '9',
      MAX(CASE hour2 WHEN 10 THEN connectcount ELSE 0 END) AS '10',
      MAX(CASE hour2 WHEN 11 THEN connectcount ELSE 0 END) AS '11',
      MAX(CASE hour2 WHEN 12 THEN connectcount ELSE 0 END) AS '12',
      MAX(CASE hour2 WHEN 13 THEN connectcount ELSE 0 END) AS '13',
      MAX(CASE hour2 WHEN 14 THEN connectcount ELSE 0 END) AS '14',
      MAX(CASE hour2 WHEN 15 THEN connectcount ELSE 0 END) AS '15',
      MAX(CASE hour2 WHEN 16 THEN connectcount ELSE 0 END) AS '16',
      MAX(CASE hour2 WHEN 17 THEN connectcount ELSE 0 END) AS '17',
      MAX(CASE hour2 WHEN 18 THEN connectcount ELSE 0 END) AS '18',
      MAX(CASE hour2 WHEN 19 THEN connectcount ELSE 0 END) AS '19',
      MAX(CASE hour2 WHEN 20 THEN connectcount ELSE 0 END) AS '20',
      MAX(CASE hour2 WHEN 21 THEN connectcount ELSE 0 END) AS '21',
      MAX(CASE hour2 WHEN 22 THEN connectcount ELSE 0 END) AS '22',
      MAX(CASE hour2 WHEN 23 THEN connectcount ELSE 0 END) AS '23',
      MAX(CASE hour2 WHEN 24 THEN connectcount ELSE 0 END) AS '24',
      MAX(CASE hour2 WHEN -1 THEN connectcount ELSE 0 END) AS '总计'
FROM #tempzjl
GROUP BY realname

drop table #tempzjl

 

转载于:https://www.cnblogs.com/monian/archive/2012/05/23/2514721.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值