需要有关Oracle SQL查询的帮助

时间:2018-08-16 00:39:24

标签: sql database oracle oracle10g

我有一个表x返回20行,表x有6列 现在我还有一个表y,其中只有一列5行  现在我想返回x的所有行和所有列以及表y的单列行,并且y的所有这5个值应重复4次,因为表x有20行。如果表x有18行,那么在表y的最后一次迭代中,只应重复3个值。

示例: 表x:

Id name
1  peter
2  john
3  robin
4  amy
5  joseph
6  king
7  brain
8  nancy

现在表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

感谢您的帮助,

感谢和问候, 维杰·杜比

1 个答案:

答案 0 :(得分:0)

您可以使用row_number()和模块化算术:

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);