我需要根据一列中的文本和另一列中的数字为多个订单项创建特定的'ID'。我本质上需要根据列中的数字重复行'n'的次数,并且每个重复的行都有一个递增的数字作为ID。
原始数据看起来像这样:
PN QTY
=== ===
ABC 1
DEF 3
GHI 1
我需要查询来返回一个如下所示的表:
ID PN QTY
=== === ===
ABC;1 ABC 1
DEF;1 DEF 3
DEF;2 DEF 3
DEF;3 DEF 3
GHI;1 GHI 1
我确定我可以在运行SQL查询后使用脚本来迭代地执行此操作,但我想避免这种情况。谢谢!
一个选项使用递归查询:
with cte (pn, qty, n) as (
select pn, qty, 1 from mytable where qty > 0
union all
select pn, qty, n + 1 from cte where n < qty
)
select pn, qty from cte order by pn
PN |数量:-| -:ABC | 1个DEF | 3DEF | 3DEF | 3GHI | 1个