SQL服务器在多列上进行透视
发布时间:2020-12-12 06:54:53 所属栏目:MsSql教程 来源:网络整理
导读:我试图转向多列.我正在使用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] FR
我试图转向多列.我正在使用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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
