create table A(id int identity(1,1), [name] char(2))
insert A select 'aa'
insert A select 'bb'
insert A select 'cc'create table B(id int identity(1,1), Aid int, [value] char(3))
insert B select 1,'aaa'
insert B select 1,'bbb'
insert B select 2,'ccc'
insert B select 2,'ddd'
insert B select 2,'eee'declare @column varchar(8000)
select @column='select id,'select @column=@column+'case Aid when '+convert(varchar,id)+' then [value] else ''0'' end ['+[name]+'],' from A
set @column=stuff(@column,len(@column),1,'')+' from B '
exec (@column)
/*
id          aa   bb   cc
----------- ---- ---- ----
1           aaa  0    0
2           bbb  0    0
3           0    ccc  0
4           0    ddd  0
5           0    eee  0*/drop table A
drop table B