首页 > 解决方案 > SQL表中如何按规则拆分行?

问题描述

所以我有很多行的 SQL 表。它看起来像这样(距顶部仅几行):

表格示例

从第一个月开始,我需要每 2 个月根据项目持续时间平均分配收入。所以想要的结果看起来像这样:

在此处输入图像描述

实现这一目标的最佳方法是什么?

标签: sqlsql-server

解决方案


您可以使用递归cte

with cte as (
     select code, finish2 as acc_date, dateadd(month, project_duration, finish2) as end_date
     from table t
     union all
     select code, dateadd(month, 2, acc_date), end_date
     from cte c
     where dateadd(month, 2, acc_date) < end_date
)
select code, acc_date
from cte c;

推荐阅读