Parece que você está tentando atribuir os empréstimos "sequencialmente" às linhas da tabela de família. A abordagem para resolver isso é primeiro obter as linhas certas e, em seguida, obter os empréstimos atribuídos às linhas.
As linhas da direita (e as três primeiras colunas) são:
select f.EmpId, e.Name, f.Relationship
from family f join
Employee e
on f.empid = e.empid;
Observe que isso não coloca hífens nas colunas para valores repetidos, mas sim os valores reais. Embora você possa organizar os hífens no SQL, é uma má ideia. Os resultados SQL estão na forma de tabelas, que são conjuntos não ordenados com valores para cada coluna e cada linha. Quando você começa a colocar hífens, você está dependendo da ordem.
Agora o problema é aderir aos empréstimos. Isso é realmente muito fácil, usando
row_number()
para adicionar uma join
chave:select f.EmpId, e.Name, f.Relationship, l.LoanId
from Employee e left join
(select f.*, row_number() over (partition by f.EmpId order by (select NULL)) as seqnum
from family f
) f
on f.empid = e.empid left join
(select l.*, row_number() over (partition by l.EmpId order by (select NULL)) as seqnum
from Loan l
) l
on f.EmpId = l.EmpId and f.seqnum = l.seqnum;
Observe que isso não garante a ordem de cessão de empréstimos para um determinado funcionário. Seus dados parecem não ter informações suficientes para lidar com uma atribuição mais consistente.