You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle SQL:透视股票价格表时保留空值的实现方法求助

实现股票价格表的透视转换(保留空值)

需求说明

你有一张按日期排序的股票价格表,包含A、B、C、D、E五只股票的数百条日期数据,需要将其透视转换为日期作为行、股票代码作为列的格式,同时保留原数据中的空值(比如示例中B股票在01/10/22的缺失值)。

原数据格式

Date   |Stock| Price |
 30/09/22 |  A  | 100.5 |
 30/09/22 |  B  | 151.3 | 
 30/09/22 |  C  | 233.4 | 
 30/09/22 |  D  | 237.2 | 
 30/09/22 |  E  | 38.42 | 
 01/10/22 |  A  | 101.5 |
 01/10/22 |  B  | ----- | 
 01/10/22 |  C  | 237.6 | 
 01/10/22 |  D  | 232.2 | 
 01/10/22 |  E  | 38.54 | 

期望结果格式

Date   |  A  |  B  |  C  |  D  |  E  |
 30/09/22 |100.5|151.3|233.4|237.2|38.42|
 01/10/22 |101.5|-----|237.6|232.2|38.54|

实现方案

1. 使用Excel实现

Excel的透视表功能可以直接完成转换,关键是设置空值保留:

  • 选中整个数据区域,点击插入 → 透视表,选择透视表放置位置。
  • 在透视表字段列表中:
    • 将Date拖到行区域
    • 将Stock拖到列区域
    • 将Price拖到值区域,右键点击值字段选择值字段设置,选择求和(因每个日期+股票组合仅一条数据,求和不会改变数值)。
  • 保留空值:右键透视表 → 透视表选项 → 在布局和格式标签下,取消勾选对于空单元格显示(或自定义显示-----)。

2. 使用Python Pandas实现

针对数百条日期的大数据量,Python处理更高效,代码示例如下:

import pandas as pd

# 构造或读取原数据(此处为示例构造,实际可通过pd.read_csv读取文件)
df = pd.DataFrame({
    'Date': ['30/09/22', '30/09/22', '30/09/22', '30/09/22', '30/09/22',
             '01/10/22', '01/10/22', '01/10/22', '01/10/22', '01/10/22'],
    'Stock': ['A', 'B', 'C', 'D', 'E', 'A', 'B', 'C', 'D', 'E'],
    'Price': ['100.5', '151.3', '233.4', '237.2', '38.42',
              '101.5', '-----', '237.6', '232.2', '38.54']
})

# 执行透视转换
pivot_df = df.pivot(index='Date', columns='Stock', values='Price').reset_index()

# 移除列名的层级标签,让格式更简洁
pivot_df.columns.name = None

# 打印结果
print(pivot_df.to_string(index=False))

这段代码会生成符合要求的透视表,且原数据中的-----空值会被完整保留。


内容的提问来源于stack exchange,提问作者Guillem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 17:10:16