create TABLE addd(diffno varchar(10),dsum int, bno varchar(10),bsum int)
insert addd select '0001', 7 ,'b1', 8
union all select '0002', 8 ,'b2', 5
union all select '0003', 5 ,'b3', 6
union all select '0004', 6 ,'b4', 7
union all select '0005', 10 ,'b5', 8
union all select '0006', 11 ,'b6', 10
union all select  '0007', 12 ,'b7', 15
union all select '0008', 13 ,'b8', 20
union all select '0009', 45 ,'b9', 12declare @s1 varchar(8000)
declare @s2 varchar(8000)
declare @s3 varchar(8000)
set @s1=''
set @s2=''
set @s3=''select @s1=@s1+' ltrim(sum(case when [diffno]='''+[diffno]+''' then ltrim([dsum]) else 0  end)) ['+[diffno]+'],' from addd
set @s1='select '+left(@s1,len(@s1)-1) +' from addd 'select @s2=@s2+' ltrim(max(case when [diffno]='''+[diffno]+''' then ltrim([bno]) else ''  ''  end)) ['+[diffno]+'],' from addd
select @s2='select '+left(@s2,len(@s2)-1) +' from addd 'select @s3=@s3+' ltrim(sum(case when [diffno]='''+[diffno]+''' then ltrim([bsum]) else 0  end)) ['+[diffno]+'],' from addd
set @s3='select '+left(@s3,len(@s3)-1) +' from addd '
select @s1+' union all ' +@s2+ ' union all '+@s3
exec(@s1+' union all ' +@s2+ ' union all '+@s3)