我试图转向多列.我正在使用sql Server 2008.这是我到目前为止所尝试的
CREATE TABLE #t ( id int,Rscd varchar(10),Accd varchar(10),position int) INSERT INTO #t Values (10,'A','B',1) INSERT INTO #t Values (10,'C','D',2) Select id,[1],[2],[11],[12] FROM (SELECT id,Rscd,Accd,position,position +10 as Aposition From #t) As query PIVOT (MAX(Rscd ) FOR Position IN ([1],[2])) AS Pivot1 PIVOT (MAX(Accd ) FOR Aposition IN ([11],[12])) AS Pivot2
以下是我得到的结果
id 1 2 11 12 10 NULL C NULL D 10 A NULL B NULL
但是我想要实现的结果是,
id 1 2 11 12 10 A C B D
有帮助吗?我的代码有什么问题.
解决方法
我会首先将列拆分成对,然后转动它们.基本上,unpivot进程会将列对(rscd,position和accd,aposition)转换为行,然后您可以应用pivot.代码将是:
select id,[12] from ( select id,col,value from #t cross apply ( select rscd,position union all select Accd,position + 10 ) c (value,col) ) d pivot ( max(value) for col in ([1],[12]) ) piv;