我已经对数据库中的某些表进行了重组,以使其更加灵活,但是我不确定如何编写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。
如何获得理想的结果?