Vypadá to, že se pokoušíte přiřadit půjčky „postupně“ k řádkům v rodinné tabulce. Řešením tohoto problému je nejprve získat správné řádky a poté k řádkům přiřadit půjčky.
Pravé řádky (a první tři sloupce) jsou:
select f.EmpId, e.Name, f.Relationship
from family f join
Employee e
on f.empid = e.empid;
Všimněte si, že to nevkládá pomlčky do sloupců pro opakované hodnoty, ale skutečné hodnoty. Ačkoli můžete zařídit pomlčky v SQL, je to špatný nápad. Výsledky SQL jsou ve formě tabulek, což jsou neuspořádané sady s hodnotami pro každý sloupec a každý řádek. Když začnete vkládat pomlčky, jste závislí na pořadí.
Nyní je problém připojit se k půjčkám. To je vlastně docela snadné pomocí row_number()
přidat join
klíč:
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;
Upozorňujeme, že to nezaručuje pořadí přidělení půjček pro daného zaměstnance. Zdá se, že vaše data nemají dostatek informací ke zpracování konzistentnějšího přiřazení.