oracle 将序列号从和到转换为单行[重复]

zphenhs4  于 2023-10-16  发布在  Oracle
关注(0)|答案(1)|浏览(109)

此问题已在此处有答案

Generate numbers for given ranges (sql query)(4个答案)
上个月关门了。
我们需要一个在Oracle SQL中转换的解决方案。
我们从第三方系统输入序列号,并以以下格式存储。

我们希望在报告中以以下格式显示值。

ryevplcw

ryevplcw1#

这是一个 * 行生成器 *。
一种选择是,使用样本数据:

SQL> with ship (shipment_no, item_number, quantity, fm_serial_number, to_serial_number) as
  2    (select 26, 'A', 18, 288, 305 from dual union all
  3     select 27, 'B', 18, 144, 161 from dual
  4    )

查询方式:

5  select shipment_no, item_number, 1 quantity,
  6    fm_serial_number + column_value - 1 as serial_number
  7  from ship cross join
  8    table(cast(multiset(select level from dual
  9                        connect by level <= to_serial_number - fm_serial_number + 1
 10                       ) as sys.odcinumberlist))
 11  order by shipment_no, serial_number;

测试结果:

SHIPMENT_NO ITEM_NUMBER    QUANTITY SERIAL_NUMBER
----------- ------------ ---------- -------------
         26 A                     1           288
         26 A                     1           289
         26 A                     1           290
         26 A                     1           291
         26 A                     1           292
         26 A                     1           293
         26 A                     1           294
         26 A                     1           295
         26 A                     1           296
         26 A                     1           297
         26 A                     1           298
         26 A                     1           299
         26 A                     1           300
         26 A                     1           301
         26 A                     1           302
         26 A                     1           303
         26 A                     1           304
         26 A                     1           305
         27 B                     1           144
         27 B                     1           145
         27 B                     1           146
         27 B                     1           147
         27 B                     1           148
         27 B                     1           149
         27 B                     1           150
         27 B                     1           151
         27 B                     1           152
         27 B                     1           153
         27 B                     1           154
         27 B                     1           155
         27 B                     1           156
         27 B                     1           157
         27 B                     1           158
         27 B                     1           159
         27 B                     1           160
         27 B                     1           161

36 rows selected.

SQL>

查看OraFAQ - Row generator techniques上的更多选项。

相关问题