A FULL JOIN
технически делает то, что вы хотите:
select ab.*, bp.*
from (select top 10 Casa_de_marcat, Numar_bon, Data_bon
from antetBonuri
where Casa_de_marcat = 1
order by Data_bon desc
) ab full join
(select top 10 Total, Data, Ora, Vinzator
from bp
order by Data desc
) bp
on 1 = 0; -- never matches
Нет очевидных JOIN
ключей.
Это дает 20 строк со всеми столбцами. В каждой строке один из наборов столбцов (для каждого подзапроса) будет иметь значение NULL
.
Это, как представляется, то, что вы просите. Я не уверен, насколько это полезно. Или почему вы предпочитаете использовать JOIN
вместо UNION ALL
, чтобы получить это.
РЕДАКТИРОВАТЬ:
Мне также кажется, что вам может потребоваться 10 рядов рядом. Если это так, тогда используйте row_number()
:
select ab.Casa_de_marcat, ab.Numar_bon, ab.Data_bon,
bp.Total, bp.Data, bp.Ora, bp.Vinzator
from (select top 10 Casa_de_marcat, Numar_bon, Data_bon,
row_number() over (order by (select null)) as seqnum
from antetBonuri
where Casa_de_marcat = 1
order by Data_bon desc
) ab full join
(select top 10 Total, Data, Ora, Vinzator,
row_number() over (order by (select null)) as seqnum
from bp
order by Data desc
) bp
on ab.seqnum = bp.seqnum;
. В результате получится 10 строк с результатами «бок о бок». Строки из двух таблиц расположены в произвольном порядке.