Veritabanımdaki bazı tabloları daha esnek olacak şekilde yeniden düzenledim, ancak onlardan anlamlı veriler çıkarmak için SQL yazmayı gerçekten bilmiyorum.
Aşağıdaki tablolar var (biraz daha net bir örnek için kısaltılmış):
CREATE TABLE Loans(
Id int,
SchemaId int,
LoanNumber nvarchar(100)
);
CREATE TABLE SchemaFields(
Id int,
SchemaId int,
FieldName nvarchar(255)
);
CREATE TABLE LoanFields(
Id int,
LoanId int,
SchemaFieldId int,
FieldValue nvarchar(4000)
);
Aşağıdaki verilerle:
INSERT INTO Loans (Id, SchemaId, LoanNumber) VALUES (1, 1, 'ABC123');
INSERT INTO SchemaFields (Id, SchemaId, FieldName) VALUES (1, 1, 'First Name');
INSERT INTO SchemaFields (Id, SchemaId, FieldName) VALUES (2, 1, 'Last Name');
INSERT INTO LoanFields (Id, LoanId, SchemaFieldId, FieldValue) VALUES (1, 1, 1, 'John');
INSERT INTO LoanFields (Id, LoanId, SchemaFieldId, FieldValue) VALUES (2, 1, 2, 'Doe');
Amaç, tüm alanları ile bir kredi için düz bir sorgu elde etmektir. (Gerçek dünyada aynı şema için muhtemelen 20-30 alan olacak, ancak örnekte sadece 2 tane var):
LoanNumber First Name Last Name
---------- ----------- ----------
ABC123 John Doe
'Ad' ve 'Soyadı' ile ilgili bir pivot kullanamıyorum çünkü orada ne olacağı hakkında hiçbir fikrim yok.
Burada zaten bir şema ile bir SQL Fiddle var .
İstenen sonucu nasıl alabilirim?