求助:
A表的结构为(amount, code, months)三列,其中amount是总数,months是年+月,要求把months转成行,根据nb_line求amount

解决方案 »

  1.   

    create table tb(amount varchar(10) , code varchar(10) , months varchar(10))
    insert into tb values('100' , '1' , '201001')
    insert into tb values('200' , '2' , '201001')
    insert into tb values('300' , '1' , '201002')
    insert into tb values('400' , '2' , '201002')
    insert into tb values('500' , '1' , '201005')
    insert into tb values('600' , '3' , '201006')
    declare @sql varchar(8000)
    set @sql = 'select code '
    select @sql = @sql + ' , sum(case months when ''' + months + ''' then amount else 0 end) [' + months + ']'
    from (select distinct months from tb) as a
    set @sql = @sql + ' from tb group by code'
    exec(@sql
    code 201001 201002 201005 201006  
    ---- ---- ---- ---- ------ ----
    1  100 300     500    0
    2  200 400   0    0
    3  0      0     0   600