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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |