Sql Oracle多个“带as”问题

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

我正在开发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.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

你能理解我的第一个目的。我只需要补充一点,我也想要val1with 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