SQL_SP:CrossTable(Rows change to Columns)

CREATE PROCEDURE rowchgtocol  AS

set nocount on

create  table #tblA(  [logrecid] [numeric](18, 0) IDENTITY (1, 1) NOT NULL ,   BH  char(3)  not  null,     GZLB  varchar(3)  not  null,     JE  int,    ) 

create table #tmp(bh char(3),a int null,b int null,c int null,d int null,e int null)

insert  #tblA  values('002',            'A',              100) 

insert  #tblA  values('002',           'B',              null) 

insert  #tblA  values('002',          'C',              110) 

insert  #tblA  values('002',           'D',              150) 

insert  #tblA  values('002',          'E',              110) 

insert  #tblA  values('001',            'A',              99) 

insert  #tblA  values('001',            'B',              null) 

insert  #tblA  values('001',            'C',              150) 

insert  #tblA  values('001',           'D',              150) 

insert  #tblA  values('001',          'E',              110) 

insert  #tblA  values('003',            'A',              null) 

insert  #tblA  values('003',            'B',              10) 

insert  #tblA  values('003',            'C',              null) 

insert  #tblA  values('003',           'D',              null) 

insert  #tblA  values('003',          'E',              110) 

declare  @sql  nvarchar(4000)    

set  @sql  =  'insert into #tmp select * from (select bh, '   

--select  @sql  =  @sql  +'  sum(case  GZLB  when  '''+  GZLB  +'''  then  (case JE when isnull(JE,0)<>0 then JE else 0 end) else  0  end)  ['+  GZLB  +'],'  from  (select  distinct  GZLB  as  GZLB    from  tblA)  tmp    

select  @sql  =  @sql  +'  sum(case  GZLB  when  '''+  GZLB  +'''  then  JE  else  null  end)  ['+  GZLB  +'],'  from  (select  distinct  GZLB  as  GZLB    from  #tblA)  tmp     set  @sql  =  substring(@sql,  1,  len(@sql)-1)  +'  from  #tblA  group  by  BH) as a'    

exec sp_executesql @sql

select *  from #tmp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值