gpt4 book ai didi

SQL 透视命令

转载 作者:行者123 更新时间:2023-12-01 19:10:23 26 4
gpt4 key购买 nike

我正在寻求一些有关设计简单枢轴的帮助,以便我可以将其链接到查询的其他部分。

我的数据是这样的

项目表

如果我运行Select * from items,下面是我的表格

ITEM      Weight    
12345 10
12345 11
654321 50
654321 20
654321 100

此表中有数百个项目,但每个项目代码只会有每条最多 3 条体重记录。

我想要想要的输出

ITEM     Weight_1    Weight_2     Weight_3
12345 10 11 null
654321 50 20 100

非常感谢任何建议,我尝试过使用枢轴,但每个后续项目都将权重放入权重 4、5、6、7 等中而不是从每件元素的权重 1 开始。

谢谢

更新

以下是我到目前为止所使用的,

SELECT r.*
FROM (SELECT 'weight' + CAST(Row_number() OVER (ORDER BY regtime ASC)AS
VARCHAR(10))
line,
id,
weight
FROM items it) AS o PIVOT(MIN([weight]) FOR line IN (weight1, weight2,
weight3)) AS r

最佳答案

你就快到了!您只是缺少 OVER 中的 PARTITION BY 子句:

SELECT r.*
FROM (SELECT 'weight' + CAST(Row_number() OVER (PARTITION BY id ORDER BY
regtime ASC)
AS
VARCHAR(10)) line,
id,
weight
FROM items it) AS o PIVOT(MIN([weight]) FOR line IN (weight1, weight2,
weight3)) AS r

当您按 ID PARTITION BY 时,会针对每个不同的 ID 重置行号。

更新

您不需要动态枢轴,因为您始终有 3 个权重。但是,如果您需要动态的列数,请查看此处的一些示例:

关于SQL 透视命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7348444/

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