需要有关 Oracle SQL 查询的帮助

维杰

我有一个表 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

我会感谢你的帮助,

感谢和问候, Vijay dubey

戈登·利诺夫

您可以使用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);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章