Sql Oracle多个“带as”问题
我正在开发Oracle 12.c企业版12.1.0.2.0 我想在这里构造一个4到15行之间的随机行数-称为DataSet-使用2个1到30之间的随机行-称为FixedSed 。。。希望2个固定集数据val1和val2在数据集中保持不变Sql Oracle多个“带as”问题,sql,oracle12c,common-table-expression,Sql,Oracle12c,Common Table Expression,我正在开发Oracle 12.c企业版12.1.0.2.0 我想在这里构造一个4到15行之间的随机行数-称为DataSet-使用2个1到30之间的随机行-称为FixedSed 。。。希望2个固定集数据val1和val2在数据集中保持不变 with DataSet as ( select level Ident , trunc(dbms_random.value(0,1)*100)-10 val from dual CONNECT BY level <= dbms_random
with DataSet as
(
select level Ident
, trunc(dbms_random.value(0,1)*100)-10 val
from dual
CONNECT BY level <= dbms_random.value(4, 15)
)
, FixedSet as
(
select trim(trunc(dbms_random.VALUE(1, 30))) val1
, trim(trunc(dbms_random.VALUE(1, 30))) val2
from dual
)
select *
from DataSet, FixedSet
我希望我能得到这样的东西:
IDENT VAL VAL1 VAL2
1 -1 6 13
2 78 6 13
3 68 6 13
4 86 6 13
5 37 6 13
6 -1 6 13
7 0 6 13
8 77 6 13
9 18 6 13
10 4 6 13
11 70 6 13
所有这些的要点是当val为负时返回val1,如果为正时返回val2
我应该换什么?
谢谢。如果您想要为每个数据集行设置固定集的常量值
另一种方法是添加val1和val2作为列定义的一部分
with DataSet as
(
select level Ident
, trunc(dbms_random.value(0,1)*100)-10 val
from dual
CONNECT BY level <= dbms_random.value(4, 15)
)
select t.*
,(select dbms_random.value(1,30) from dual) as val1
,(select dbms_random.value(1,30) from dual) as val2
from DataSet t
你能理解我的第一个目的。我只需要补充一点,我也想要val1
with FixedSet as
(
select level lfs, trim(trunc(dbms_random.VALUE(1, 30))) val1
, trim(trunc(dbms_random.VALUE(1, 30))) val2
from dual
connect by level <=1
)
, DataSet as
(
select level Ident
, trunc(dbms_random.value(0,1)*100)-10 val
from dual
CONNECT BY level <= dbms_random.value(4, 15)
)
select *
from DataSet, FixedSet;
with DataSet as
(
select level Ident
, trunc(dbms_random.value(0,1)*100)-10 val
from dual
CONNECT BY level <= dbms_random.value(4, 15)
)
select t.*
,(select dbms_random.value(1,30) from dual) as val1
,(select dbms_random.value(1,30) from dual) as val2
from DataSet t