微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。