У меня есть таблица x, которая возвращает 20 строк, а таблица x имеет 6 столбцов и теперь у меня есть еще одна таблица y, в которой есть только один столбец с 5 строками теперь я хотел бы вернуть все строки и все столбцы x плюс отдельные строки столбца таблицы y, и все эти 5 значений y должны быть повторены 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
Буду признателен за вашу помощь,
Спасибо и привет, Виджей дубей
Можно использовать 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);
Большое спасибо Гордону за такую краткую и чудесную логику, большое спасибо :-)
Для протокола, я думаю, что это хороший вопрос, и я не понимаю отрицательных голосов.