gpt4 book ai didi

python - SQL Server 透视一列并保留其他列

转载 作者:行者123 更新时间:2023-12-05 01:34:23 24 4
gpt4 key购买 nike

我正在尝试在 SQL Server 中旋转一个表(超过 5200 万个观察值),但是我没有得到我需要的结果。有 15 个描述,每个描述都有一个我需要转换的值。

原始数据框:

ID         |  Date      | Description| Value 
-------------------------------------------------
P1 | 2016-12-31 | ABC | 900
P2 | 2016-11-30 | XYZ | 800
P3 | 2016-10-31 | MNO | 700

期望的结果

ID         |  Date      | ABC | XYZ  | MNO 
-------------------------------------------------
P1 | 2016-12-31 | 900 | |
P2 | 2016-11-30 | | 800 |
P3 | 2016-10-31 | | | 700

我已经尝试在 PySpark 和 SQL 中进行旋转,但没有得到有效的结果。

SQL 尝试:

SELECT [Date]
,[ID]
,[Description]
,[Value]
FROM [DB].[TABLE]
WHERE ( ([Description] IN ('ABC','XYZ', 'MNO'))
PIVOT(
COUNT([Value])
FOR Description IN (
[ABC],
[XYZ],
[MNO])
) AS pivot_table;

我在 Pyspark 中尝试过,但它也不起作用:

df.groupBy("ID","Date").pivot("Description").sum("Value")

最佳答案

使用条件聚合:

select
id,
date,
max(case when description = 'ABC' then value end) as abc,
max(case when description = 'DEF' then value end) as def,
max(case when description = 'MNO' then value end) as mno
from mytable
group by id, date

关于python - SQL Server 透视一列并保留其他列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63712706/

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