34,594
社区成员
发帖
与我相关
我的任务
分享
declare @tsql varchar(max),
@d varchar(1000),
@e varchar(1000)
select @d=isnull(@d+',','')+'['+des1+']',
@e=isnull(@e+',','')+'['+des2+']'
from #a
select @tsql='
select id,'+@e+'
from (select t.rn,t.id,a.des2,t.v
from (select rn,id,c,v
from (select rn=row_number() over(order by getdate()),* from #b) b
unpivot(v for c in('+@d+')) u) t
inner join #a a on t.id=a.id and t.c=a.des1) v
pivot(max(v) for des2 in('+@e+')) p '
exec(@tsql)
/*
id A B C
---------- ---------- ---------- ----------
po1 11 111 1111
po1 22 222 2222
po1 33 333 3333
(3 行受影响)
*/
select id,[A],[B],[C]
from (select t.rn,t.id,a.des2,t.v
from (select rn,id,c,v
from (select rn=row_number() over(order by getdate()),* from #b) b
unpivot(v for c in([s1],[s2],[s3])) u) t
inner join #a a on t.id=a.id and t.c=a.des1) v
pivot(max(v) for des2 in([A],[B],[C])) p
/*
id A B C
---------- ---------- ---------- ----------
po1 11 111 1111
po1 22 222 2222
po1 33 333 3333
(3 行受影响)
*/