Det ser ud til, at du forsøger at tildele lånene "sekventielt" til rækker i familietabellen. Metoden til at løse dette er først at få de rigtige rækker, og derefter at få lånene tildelt rækker.
De højre rækker (og de første tre kolonner) er:
select f.EmpId, e.Name, f.Relationship
from family f join
Employee e
on f.empid = e.empid;
Bemærk, at dette ikke sætter bindestreger i kolonnerne for gentagne værdier, det sætter i de faktiske værdier. Selvom du kan arrangere bindestregerne i SQL, er det en dårlig idé. SQL-resultater er i form af tabeller, som er uordnede sæt med værdier for hver kolonne og hver række. Når du begynder at sætte bindestreger i, er du afhængig af rækkefølgen.
Nu er problemet at komme med i lånene. Dette er faktisk ret nemt ved at bruge row_number()
for at tilføje en join
nøgle:
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;
Bemærk, at dette ikke garanterer rækkefølgen af tildeling af lån for en given medarbejder. Dine data ser ikke ud til at have nok information til at håndtere en mere konsekvent opgave.