Oracle SQL:视图中值之间的联接
我有一个视图显示了GSMN编号列表,用于计算某些关税。这些数字来自数字表,这是一个简单而基本的视图。 然而,我需要根据具体数据添加更多的数字,而这正是它变得困难的地方 我有一个表,它不是gsmnumbers的列表,只是包含一些范围。我需要能够将这些范围内的所有数字添加到gsmnumber视图中 如果我们查看包含范围的表,它们有一个ID、一个产品代码、一个beginvalue和一个endvalue,beginvalue和endvalue也需要包括在内。对于产品代码为37的每一行,我需要有一个介于beginvalues和endvalues之间的所有数值的列表Oracle SQL:视图中值之间的联接,sql,oracle,oracle10g,Sql,Oracle,Oracle10g,我有一个视图显示了GSMN编号列表,用于计算某些关税。这些数字来自数字表,这是一个简单而基本的视图。 然而,我需要根据具体数据添加更多的数字,而这正是它变得困难的地方 我有一个表,它不是gsmnumbers的列表,只是包含一些范围。我需要能够将这些范围内的所有数字添加到gsmnumber视图中 如果我们查看包含范围的表,它们有一个ID、一个产品代码、一个beginvalue和一个endvalue,beginvalue和endvalue也需要包括在内。对于产品代码为37的每一行,我需要有一个介于b
事实上,我有不同的范围,这让我很难找到答案,因为我的大多数搜索只回答如何获得单个范围的值 您可以构建返回数字1、2、3、4的简单分层查询。。。并将其与您的表连接:
你需要一个类似于左连接的复合条件,比如。。。从g.gsmnumber>=r.beginvalue和g.gsmnumber上的gsmtable g left join Range r可能如果您更新您的问题以包括示例输入和预期输出数据,我们将能够帮助您?请参阅[此问题]以了解如何提供样本数据的示例-这是应该提供的最低要求-请使用create table和insert语句,或者如果您可以使用WITH子句设置查询以生成样本数据,那就更好了。或者提供包含在其中的脚本。
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