select c_1,c_3,sum(c_4) from table group by c_1,c_3

解决方案 »

  1.   

    declare @s varchar(8000)
    set @s = ''select @s = @s + ',['+c_3+']= sum(case when c_3 = '+c_3+' then c_4 else 0 end)'
    from t_data group by c_3 order by c_3set @s = 'select c_1 '+@s+' from t_data group by c_1'exec(@s)
      

  2.   

    Create  Table  t_data(c_1 varchar(5), c_2 varchar(15),   c_3  varchar(5),  c_4  int)
    Insert  Into  t_data
    select 'mm',  '100001' ,  'a1',    10   union  all
    select 'mm',  '120021',   'b1',    5  union  all
    select 'mm',  '100001',   'a1',    12  union  all
    select 'mm',  '100001',   'b1',    6  union  all
    select 'bb',  '125485',   'b1',    8  union  all
    select 'mm',  '100001',   'a1',    9     union  all
    select 'nn',  '115254' ,  'c1',    12  union  all
    select 'mm',  '124548',   'd1',    45
    ---------------實現語句----------------------------
    declare  @s  varchar(4000)
    set  @s=''
    select  @s=@s+''+c_3+'='''+c_3+''',['+c_3 + ']=isnull((select sum(c_4)  from t_data where c_1=a.c_1 and c_3='''+c_3+''' group by c_1,c_3 ),0),'  from t_data  group by c_3  order by c_3
    set   @s='select c_1,'+left(@s,len(@s)-1)+' From t_data  a group by c_1 order by c_1 '
    select @s
    exec(@s)
    --------------結果---------------------------
    nn a1 0 b1 0 c1 12 d1 0
    mm a1 31 b1 11 c1 0 d1 45
    bb a1 0 b1 8 c1 0 d1 0