J'ai réorganisé certaines tables dans ma base de données pour être plus flexible, mais je ne sais pas vraiment comment écrire le SQL pour en extraire des données significatives.
J'ai les tableaux suivants (quelque peu abrégés pour un exemple plus clair):
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)
);
Avec les données suivantes:
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');
L'objectif est d'obtenir une requête plate pour un prêt avec tous ses champs. (Dans le monde réel, il y aura probablement entre 20 et 30 champs pour le même schéma, mais nous n'en avons que 2 dans l'exemple):
LoanNumber First Name Last Name
---------- ----------- ----------
ABC123 John Doe
Je ne peux pas utiliser un pivot qui fait référence au «Prénom» et au «Nom de famille» car je n'aurai aucune idée de ce qui sera réellement là.
J'ai un SQL Fiddle ici avec un schéma déjà en place.
Comment puis-je obtenir le résultat souhaité?
la source