データベース内のいくつかのテーブルをより柔軟に再編成しましたが、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
「First Name」と「Last Name」を参照するピボットを使用することはできません。何が実際にあるのかわからないからです。
私が持ってここにSQLフィドルをすでにスキーマに。
どうすれば望ましい結果を得ることができますか?