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

求助:如何用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 08:06:17