SQL 根据字段值重复行,同时增加另一个字段

问题描述

我被卡住了,需要一些帮助。我使用的是 sql 2017。

如何根据字段 WC_Count 重复以下数据,同时增加操作数?

原样

工作 股票代码 仓库 操作 Op_Count WC_Count
000000000219587 CODE1 1W 1 6 4
000000000219587 CODE2 1W 2 6 4
000000000219587 CODE3 1W 3 6 4
000000000219587 CODE4 1W 4 6 4
000000000219587 CODE5 1W 5 6 4
000000000219587 CODE6 1W 6 6 4

成为

工作 股票代码 仓库 操作 Op_Count WC_Count
000000000219587 CODE1 1W 1 6 4
000000000219587 CODE2 1W 2 6 4
000000000219587 CODE3 1W 3 6 4
000000000219587 CODE4 1W 4 6 4
000000000219587 CODE5 1W 5 6 4
000000000219587 CODE6 1W 6 6 4
000000000219587 CODE1 1W 7 6 4
000000000219587 CODE2 1W 8 6 4
000000000219587 CODE3 1W 9 6 4
000000000219587 CODE4 1W 10 6 4
000000000219587 CODE5 1W 11 6 4
000000000219587 CODE6 1W 12 6 4
000000000219587 CODE1 1W 13 6 4
000000000219587 CODE2 1W 14 6 4
000000000219587 CODE3 1W 15 6 4
000000000219587 CODE4 1W 16 6 4
000000000219587 CODE5 1W 17 6 4
000000000219587 CODE6 1W 18 6 4
000000000219587 CODE1 1W 19 6 4
000000000219587 CODE2 1W 20 6 4
000000000219587 CODE3 1W 21 6 4
000000000219587 CODE4 1W 22 6 4
000000000219587 CODE5 1W 23 6 4
000000000219587 CODE6 1W 24 6 4

解决方法

您可以使用递归子查询。您没有描述递增 op 的确切逻辑,所以我将只使用 row_number()

with cte as (
      select Job,StockCode,Warehouse,Op,Op_Count,WC_Count,1 as n
      from t
      union all
      select Job,n + 1
      from cte
      where n < wc_count
     )
select Job,row_number() over (order by n,op) as op,op_count,wc_count
from cte;

Here 是一个 dbfiddle。