gpt4 book ai didi

sql - 如何将行旋转到具有已知最大列数的列

转载 作者:行者123 更新时间:2023-12-04 21:54:31 26 4
gpt4 key购买 nike

我有一个这样的表格:

Pricing_Group

GroupID     |   QTY
TestGroup1 | 1
TestGroup1 | 2
TestGroup1 | 4
TestGroup1 | 8
TestGroup1 | 22
TestGroup2 | 2
TestGroup3 | 2
TestGroup3 | 5

我正在寻找的是这样的结果:

Pricing_Group

GroupID     |   QTY1    |   QTY2    |   QTY3    |   QTY4    |   QTY5
TestGroup1 | 1 | 2 | 4 | 8 | 22
TestGroup2 | 2 | NULL | NULL | NULL | NULL
TestGroup3 | 2 | 5 | NULL | NULL | NULL

请注意,对于给定的 GroupID,最多只能有 5 个不同的数量,只是不知道这 5 个数量是多少。

这似乎是 PIVOT 的一个应用程序,但我无法完全理解此类应用程序所需的语法。

感谢您抽出宝贵时间研究此问题!

最佳答案

pivot 的完美案例,您不需要 CTE:

Declare @T Table (GroupID varchar(10) not null,
QTY int)

Insert Into @T
Values ('TestGroup1', 1),
('TestGroup1', 2),
('TestGroup1', 4),
('TestGroup1', 8),
('TestGroup1', 22),
('TestGroup2', 2),
('TestGroup3', 2),
('TestGroup3', 5)

Select GroupID, [QTY1], [QTY2], [QTY3], [QTY4], [QTY5]
From (Select GroupID, QTY,
RowID = 'QTY' + Cast(ROW_NUMBER() Over (Partition By GroupID Order By QTY) as varchar)
from @T) As Pvt
Pivot (Min(QTY)
For RowID In ([QTY1], [QTY2], [QTY3], [QTY4], [QTY5])
) As Pvt2

关于sql - 如何将行旋转到具有已知最大列数的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8508577/

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