如何解决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 举报,一经查实,本站将立刻删除。