基于另一列中的数据创建编号行[oracle]

lh80um4z  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(310)

我需要根据一列的文本和另一列的数字为多个行项目创建一个特定的“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查询运行之后使用脚本迭代地完成这个任务,但是我想避免这种情况。谢谢!

wvt8vs2t

wvt8vs2t1#

一个选项使用递归查询:

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

db小提琴演示:

PN  | QTY
:-- | --:
ABC |   1
DEF |   3
DEF |   3
DEF |   3
GHI |   1

相关问题