需要Oracle SQL查询的帮助吗

需要Oracle SQL查询的帮助吗,sql,database,oracle,oracle10g,Sql,Database,Oracle,Oracle10g,我有一个表x,它返回20行,表x有6列 现在我又有了一个表y,它只有一列5行 现在我想返回x的所有行和列加上表y的单列行,所有这5个y值应该重复4次,因为表x有20行。若表x有18行,那个么在表y的最后一次迭代中,只有3个值应该重复 例如: 表十: 现在,表y: Rank X Y Z 我想要的最终输出 Id name rank 1 peter X 2 john Y 3 robin Z 4 amy X 5 joseph

我有一个表x,它返回20行,表x有6列 现在我又有了一个表y,它只有一列5行 现在我想返回x的所有行和列加上表y的单列行,所有这5个y值应该重复4次,因为表x有20行。若表x有18行,那个么在表y的最后一次迭代中,只有3个值应该重复

例如: 表十:

现在,表y:

Rank
X
Y
Z
我想要的最终输出

Id name        rank
1  peter       X
2  john        Y
3  robin       Z
4  amy         X
5  joseph      Y
6  king        Z
7  brain       X
8  nancy       Y
我会感谢你的帮助

感谢和问候, Vijay dubey

您可以使用行数和模运算:

select x.*, y.rank
from (select x.*, row_number() over (order by id) as seqnum
      from x
     ) x join
     (select y.*, row_number() over (order by id) as seqnum,
             count(*) over () as cnt
      from y
     ) y
     on mod(x.seqnum, y.cnt) = mod(y.seqnum, y.cnt);

非常感谢戈登的简短而精彩的逻辑,非常感谢:-为了记录在案,我认为这是一个好问题,我不理解反对票。
select x.*, y.rank
from (select x.*, row_number() over (order by id) as seqnum
      from x
     ) x join
     (select y.*, row_number() over (order by id) as seqnum,
             count(*) over () as cnt
      from y
     ) y
     on mod(x.seqnum, y.cnt) = mod(y.seqnum, y.cnt);