Oracle SQL:在视图

时间:2015-11-16 10:14:56

标签: sql oracle oracle10g

我有一个显示gsmnumbers列表的视图,用于计算某些关税。这些数字来自数字表,这是一个简单而基本的视图。 但是,我需要根据特定数据为其添加更多数字,并且这是变得困难的地方。

我有一个表不是gsmnumbers的列表,但只包含一些范围。我需要能够将这些范围内的所有数字添加到gsmnumber视图中。

如果我们查看包含范围的表,它们有ID,产品代码,beginvalue和endvalue(还需要包括beginvalue和endvalue)。我需要有一个列表,列出产品代码为37的每一行的beginvalues和endvalues之间的所有数值。

我有不同的范围这一事实使我很难找到答案,因为我的大多数搜索只是回答如何获得单一范围的值。

1 个答案:

答案 0 :(得分:0)

您可以构建简单的分层查询返回数字(1,2,3,4 ...)并将其与您的表连接:

SQLFiddle demo

with 
  tmp1 as (select max(endvalue-beginvalue+1) mv from gsm where product=37),
  tmp2 as (select level lvl from tmp1 connect by level<=mv)
select id, beginvalue+lvl-1 nr, beginvalue, endvalue
  from gsm join tmp2 on beginvalue+lvl-1<=endvalue
  where product = 37 order by id, beginvalue+lvl-1