本文介绍了Oracle遍历列上的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我有一些像这样的数据

So I have some data like this

NO| ID    | PID | COUNT
1 | 00033 | P4  | 1
2 | 00033 | P3  | 3
3 | 00033 | P2  | 2

我想像这样基于计数值迭代ID和PID

i want to iterate the ID and PID based on count values, like this

NO| ID    | PID
1 | 00033 | P4
2 | 00033 | P3
3 | 00033 | P3
4 | 00033 | P3
5 | 00033 | P2
6 | 00033 | P2

如何使用Oracle PL/SQL过程/游标实现此目标的最佳方法.

hows the best way to achieve this using Oracle PL/SQL procedure / cursor.

关于,瑞安

推荐答案

使用普通SQL:

SELECT row_number() OVER ( ORDER BY t."ID", t."PID" DESC ) as NO, 
       t."ID", t."PID"
FROM Table1 t
CROSS APPLY(
  SELECT 1 FROM dual
  CONNECT BY level <= t."COUNT"
)
ORDER BY t."ID", t."PID" DESC

演示: https://dbfiddle.uk/?rdbms=oracle_18&fiddle=d0840879efd244

这篇关于Oracle遍历列上的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-21 01:53