Ich habe einige Tabellen in meiner Datenbank neu organisiert, um flexibler zu sein, bin mir aber nicht sicher, wie ich SQL schreiben soll, um aussagekräftige Daten daraus zu extrahieren.
Ich habe die folgenden Tabellen (für ein klareres Beispiel etwas abgekürzt):
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)
);
Mit folgenden Daten:
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');
Ziel ist es, eine flache Anfrage für ein Darlehen mit all seinen Feldern zu erhalten. (In der realen Welt wird es wahrscheinlich zwischen 20 und 30 Felder für dasselbe Schema geben, aber wir haben nur 2 im Beispiel):
LoanNumber First Name Last Name
---------- ----------- ----------
ABC123 John Doe
Ich kann keinen Pivot verwenden, der auf 'Vorname' und 'Nachname' verweist, da ich keine Ahnung habe, was tatsächlich dort sein wird.
Ich habe hier eine SQL-Geige mit bereits vorhandenem Schema.
Wie kann ich das gewünschte Ergebnis erzielen?
quelle