gpt4 book ai didi

SQL Server 在多个列上进行透视

转载 作者:行者123 更新时间:2023-12-02 12:16:04 25 4
gpt4 key购买 nike

我正在尝试在多个列上进行旋转。我正在使用 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 过程会将成对的列(rscdpositionaccdaposition)转换为行,然后你可以应用枢轴。代码将是:

select id, [1], [2], [11], [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], [2], [11], [12])
) piv;

参见SQL Fiddle with Demo

关于SQL Server 在多个列上进行透视,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18662012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com