繁体   English   中英

SQL 基于字段值重复行,同时增加另一个字段

[英]SQL repeating rows based on a field value , also increment another field

我被困住了,需要一些帮助。 我正在使用 SQL 2017。

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

原样

工作 股票代码 仓库 操作 Op_Count WC_Count
000000000219587 代码1 1W 1 6 4
000000000219587 代码2 1W 2 6 4
000000000219587 代码3 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 代码1 1W 1 6 4
000000000219587 代码2 1W 2 6 4
000000000219587 代码3 1W 3 6 4
000000000219587 CODE4 1W 4 6 4
000000000219587 CODE5 1W 5 6 4
000000000219587 CODE6 1W 6 6 4
000000000219587 代码1 1W 7 6 4
000000000219587 代码2 1W 8 6 4
000000000219587 代码3 1W 9 6 4
000000000219587 CODE4 1W 10 6 4
000000000219587 CODE5 1W 11 6 4
000000000219587 CODE6 1W 12 6 4
000000000219587 代码1 1W 13 6 4
000000000219587 代码2 1W 14 6 4
000000000219587 代码3 1W 15 6 4
000000000219587 CODE4 1W 16 6 4
000000000219587 CODE5 1W 17 6 4
000000000219587 CODE6 1W 18 6 4
000000000219587 代码1 1W 19 6 4
000000000219587 代码2 1W 20 6 4
000000000219587 代码3 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, StockCode, Warehouse, Op, Op_Count, WC_Count, n + 1
      from cte
      where n < wc_count
     )
select Job, StockCode, Warehouse,
       row_number() over (order by n, op) as op,
       op_count, wc_count
from cte;

是一个 db<>fiddle。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM