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

如何在PostgreSQL中根据days列条件新增日期递增的行

根据days列生成递增日期行的实现方案

方法一:Excel操作步骤

假设你的数据在A(Date)、B(Group)、C(days)列,第一行是表头:

  1. 插入辅助列D,在D2输入公式:=SEQUENCE(C2,1,A2,1),回车后会生成从当前Date开始、共days天的日期序列(比如A组会生成1/1/2023、2/1/2023、3/1/2023)
  2. 选中D2单元格,鼠标移到单元格右下角,光标变成十字时双击,自动填充所有行的辅助列
  3. 选中A到D列,按Ctrl+G打开定位窗口,点击「定位条件」选择「常量」,确定后选中所有非公式的单元格(表头和原始数据行)
  4. 右键点击选中区域选择「复制」,在空白区域右键「粘贴」,得到展开后的基础数据
  5. 删除辅助列D,调整格式即可得到目标结果:
    • A组3行,Date依次为1/1/2023、2/1/2023、3/1/2023,days均为3
    • B组4行,Date依次为5/1/2023、6/1/2023、7/1/2023、8/1/2023,days均为4

方法二:Python Pandas实现

如果用Python处理,Pandas可以快速批量完成:

import pandas as pd

# 模拟原始数据
df = pd.DataFrame({
    'Date': ['1/1/2023', '5/1/2023'],
    'Group': ['A', 'B'],
    'days': [3, 4]
})

# 把Date列转为日期格式
df['Date'] = pd.to_datetime(df['Date'], dayfirst=True)

# 按days生成递增日期并展开行
df_expanded = df.assign(
    Date=df.apply(lambda x: pd.date_range(start=x['Date'], periods=x['days'], freq='D'), axis=1)
).explode('Date', ignore_index=True)

# 把日期转回原始显示格式(可选)
df_expanded['Date'] = df_expanded['Date'].dt.strftime('%d/%m/%Y')

print(df_expanded)

运行后输出结果:

Date Group  days
0  01/01/2023     A     3
1  02/01/2023     A     3
2  03/01/2023     A     3
3  05/01/2023     B     4
4  06/01/2023     B     4
5  07/01/2023     B     4
6  08/01/2023     B     4

内容的提问来源于stack exchange,提问作者Hoàng Phạm Kim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 00:57:23