sql >> Databáze >  >> RDS >> Sqlserver

Zřetězit více než dvě tabulky vodorovně v SQL Server

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í.



  1. Algoritmus, který vyhledává související položky na základě běžných značek

  2. Vytvoření uživatele Oracle, pokud ještě neexistuje

  3. Jak mohu spojit 3 tabulky a vypočítat správný součet polí ze 2 tabulek, bez duplicitních řádků?

  4. Chyba s MySQLdb na OS X El Capitan