데이터베이스의 일부 테이블을보다 유연하게 재구성했지만 의미있는 데이터를 추출하기 위해 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이 있습니다 .
원하는 결과를 얻으려면 어떻게해야합니까?