Sepertinya Anda mencoba menetapkan pinjaman "secara berurutan" ke baris di tabel keluarga. Pendekatan untuk menyelesaikannya adalah pertama-tama mendapatkan baris yang benar, lalu mendapatkan pinjaman yang diberikan ke baris.
Baris kanan (dan tiga kolom pertama) adalah:
select f.EmpId, e.Name, f.Relationship
from family f join
Employee e
on f.empid = e.empid;
Perhatikan bahwa ini tidak menempatkan tanda hubung di kolom untuk nilai berulang, ini memasukkan nilai sebenarnya. Meskipun Anda dapat mengatur tanda hubung dalam SQL, itu adalah ide yang buruk. Hasil SQL dalam bentuk tabel, yang merupakan kumpulan tidak berurutan dengan nilai untuk setiap kolom dan setiap baris. Saat Anda mulai memasukkan tanda hubung, Anda bergantung pada urutannya.
Sekarang masalahnya adalah bergabung dalam pinjaman. Ini sebenarnya cukup mudah, dengan menggunakan row_number()
untuk menambahkan join
kunci:
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;
Perhatikan bahwa ini tidak menjamin urutan pemberian pinjaman untuk karyawan tertentu. Data Anda tampaknya tidak memiliki informasi yang cukup untuk menangani tugas yang lebih konsisten.