ฉันได้จัดตารางบางส่วนในฐานข้อมูลของฉันให้มีความยืดหยุ่นมากขึ้น แต่ฉันไม่แน่ใจว่าจะเขียน SQL อย่างไรเพื่อดึงข้อมูลที่มีความหมายออกมา
ฉันมีตารางต่อไปนี้ (ค่อนข้างยากสำหรับตัวอย่างที่ชัดเจน):
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)
);ด้วยข้อมูลต่อไปนี้:
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');วัตถุประสงค์คือเพื่อให้ได้ข้อความค้นหาที่คงที่สำหรับเงินกู้ที่มีเขตข้อมูลทั้งหมด (ในโลกแห่งความเป็นจริงมีแนวโน้มว่าจะอยู่ระหว่าง 20-30 ฟิลด์สำหรับสคีมาเดียวกัน แต่เรามีเพียง 2 ตัวอย่าง):
LoanNumber   First Name    Last Name
----------   -----------   ----------
ABC123       John          Doeฉันไม่สามารถใช้เดือยที่อ้างอิงถึง 'ชื่อจริง' และ 'นามสกุล' ได้เพราะฉันไม่รู้ว่าจะเกิดอะไรขึ้นที่นั่น
ฉันมีSQL Fiddle ที่นี่พร้อมกับสคีมาอยู่แล้ว
ฉันจะได้รับผลลัพธ์ที่ต้องการได้อย่างไร