df-drills pandas · Polars · DuckDB SQL · DuckDB Relational 题目列表 登录

长转宽

中等 17-reshape 重塑 pivotreshapelong-to-wide

把月度销售的长表转成宽表:每个门店一行,每个月一列。

  • 月份列固定为 2026 年 1–4 月这 4 列,列名写成 2026-01、2026-02、2026-03、2026-04。
  • 即使某个月在整张表里一条记录都没有,这一列也要输出(全为 null)。
  • 某门店某月没有记录时,该格为 null;记录存在但 sales 本身为 null 时,该格也为 null。
  • 每个 (store, month) 至多一条记录。表里出现过的门店都要输出。

输入

  • monthly_sales(store, month, sales):month 是 date 类型,取每月 1 号;sales 为整数,可能为 null

输出

列为 store, 2026-01, 2026-02, 2026-03, 2026-04,行顺序、列顺序不限。

输入表 (case base,共 2 个 case:base、gap)

monthly_sales local/base/monthly_sales
#storestringmonthdatesalesint64
1 S01 2026-01-01 120
2 S01 2026-02-01 135
3 S01 2026-03-01 98
4 S01 2026-04-01 150
5 S02 2026-01-01 80
6 S02 2026-03-01 95
7 S03 2026-02-01 60
8 S03 2026-03-01 null
9 S03 2026-04-01 70
10 S04 2026-04-01 200
共 10 行

期望输出 (case base,行顺序不限)

#storeString2026-01Decimal(precision=38, scale=0)2026-02Decimal(precision=38, scale=0)2026-03Decimal(precision=38, scale=0)2026-04Decimal(precision=38, scale=0)
1 S01 120.0 135.0 98.0 150.0
2 S03 null 60.0 null 70.0
3 S04 null null null 200.0
4 S02 80.0 null 95.0 null
共 4 行