SQL服务器在多列上进行透视

前端之家收集整理的这篇文章主要介绍了SQL服务器在多列上进行透视前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图转向多列.我正在使用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;

SQL Fiddle with Demo

猜你在找的MsSQL相关文章