我有一个表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
感谢您的帮助,
感谢和问候, 维杰·杜比
答案 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);