求助:如何用SQL将单条宽格式数据转换为分年度长格式数据?
数据拆分转换实现方案
以下是几种能实现你需求的实用方法,根据数据量大小选择即可:
方法一:Excel/Google Sheets 快速拆分(小数据量)
直接用单元格引用拆分:
- 2021行:
依次填入A、15902、2021,然后分别引用原数据的第3、5、7个数值(比如原数据在第1行,就用=C1、=E1、=G1) - 2022行:
依次填入A、15902、2022,然后分别引用原数据的第4、6、8个数值(=D1、=F1、=H1)
有多行数据的话,直接下拉公式就能批量生成。
方法二:Python 脚本批量处理(大数据量)
如果要处理大量行,用脚本自动化:
把原数据保存为data.txt,运行以下脚本:
with open('data.txt', 'r') as f_in, open('output.txt', 'w') as f_out: for line in f_in: parts = list(filter(None, line.strip().split())) if len(parts) != 8: continue # 生成2021行 f_out.write(f"{parts[0]:<10} {parts[1]:<8} 2021 {parts[2]:<6} {parts[4]:<6} {parts[6]}\n") # 生成2022行 f_out.write(f"{parts[0]:<10} {parts[1]:<8} 2022 {parts[3]:<6} {parts[5]:<6} {parts[7]}\n")
执行后会在当前目录生成output.txt,里面就是拆分好的格式。
方法三:Shell awk 命令(终端快速处理)
如果用Linux/macOS终端,一行命令就能搞定:
awk '{printf "%-10s %-8s 2021 %-6s %-6s %s\n", $1,$2,$3,$5,$7; printf "%-10s %-8s 2022 %-6s %-6s %s\n", $1,$2,$4,$6,$8}' data.txt > output.txt
这条命令会自动把每行拆成对应年度的两行,结果写入output.txt。
内容的提问来源于stack exchange,提问作者brockey2sockey
相关产品推荐
相关产品推荐

