将含重复ID的SQL Server表转换为多列新表
完全可行,这是典型的数据透视转换操作
这属于将长表转宽表的常见需求,几乎所有主流数据处理工具都能轻松实现,以下是几种常用工具的具体操作方式:
1. SQL实现(以MySQL为例)
假设原表Table1的字段为ID、Score(比分)、Odds(赔率),可以用动态SQL实现(适配动态变化的比分列):
SET @sql = NULL; SELECT GROUP_CONCAT(DISTINCT CONCAT( 'MAX(CASE WHEN Score = ''', Score, ''' THEN Odds END) AS `', Score, '`' ) ) INTO @sql FROM Table1; SET @sql = CONCAT('SELECT ID, ', @sql, ' FROM Table1 GROUP BY ID'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
2. Excel实现
- 选中原表数据区域,点击「插入」选项卡中的数据透视表
- 在透视表字段设置中:
- 将
ID拖到「行」区域 - 将
Score拖到「列」区域 - 将
Odds拖到「值」区域,修改值汇总方式为「最大值」(因每个ID+比分组合仅一条数据,最大值即为对应赔率)
- 将
- 调整透视表格式即可得到目标表
3. Python Pandas实现
import pandas as pd # 读取原表数据(支持CSV、数据库等多种数据源) df = pd.read_csv('Table1.csv') # 执行透视转换 pivot_df = df.pivot(index='ID', columns='Score', values='Odds').reset_index() # 导出结果 pivot_df.to_csv('目标表.csv', index=False)
内容的提问来源于stack exchange,提问作者tom bannister
相关产品推荐
相关产品推荐

