with bar_no as (
select 1 start_bar, 5 end_bar from dual)
select barcode
from (select level barcode
from dual
connect by level <= (select max(end_bar) from bar_no)) a
where exists (
select 1
from bar_no
where barcode between bar_no.start_bar and bar_no.end_bar)
这将重新开始: 1 2 3 4 5
我需要一些帮助才能推进此查询。如何设置查询以多次打印每个数字(返回)。
例如:
打印1到5之间的数字并打印每个数字3次。
最终结果: 1 1 1 2 2 2 3 3 3 4 4 4 五 五 5
顺便说一句。我将在Jasper ireport中使用它,并且不想使用过程,函数等
请帮忙!提前谢谢
答案 0 :(得分:3)
您可以在with
语句中生成序列,然后将它们连接在一起:
with bar_no as (
select 1 start_bar, 5 end_bar from dual
),
codes as (
select level + start_bar - 1 start_bar
from bar_no
connect by level <= end_bar - start_bar + 1
),
counts as (
select level as repcnt
from dual connect by level <= 3
)
select *
from codes cross join counts
order by 1, 2;
答案 1 :(得分:0)
尝试使用交叉连接作为下面的
with bar_no as (
select 1 start_bar, 5 end_bar from dual)
select barcode
from (select level barcode
from dual
connect by level <= (select max(end_bar) from bar_no)) a
where exists (
select 1
from bar_no
cross join
(
select 1
union all
select 2
union all
select 3
) CJ
where barcode between bar_no.start_bar and bar_no.end_bar)