엔티티 - 특성 테이블을 피벗하는 방법이 있습니까? 얼마나 많은 속성이 있는지에 관계없이 모든 행을 열로 바꾸고 싶습니다.SQL 피벗 테이블
다음은 내가 성취하고자하는 목표의 예입니다. 이 예에서는 이름, 성 등 두 가지 속성을 사용합니다. 그러나 실제 데이터베이스에는 수천 개의 속성이 있으며보고 목적으로 열로 넘겨 씁니다.
모든 속성에 대해 CTE를 작성하고 싶지 않습니다.
USE TempDB
DECLARE @Attribute TABLE(
AttributeID Int Identity(10,1) PRIMARY KEY,
AttributeName Varchar(MAX))
INSERT INTO @Attribute(AttributeName) VALUES('Firstname')
INSERT INTO @Attribute(AttributeName) VALUES('Lastname')
DECLARE @tbl TABLE(
AttributeID Int,
EntityValue Varchar(MAX)
)
INSERT INTO @tbl(AttributeID,EntityValue) VALUES(10,'John')
INSERT INTO @tbl(AttributeID,EntityValue) VALUES(10,'Paul')
INSERT INTO @tbl(AttributeID,EntityValue) VALUES(10,'George')
INSERT INTO @tbl(AttributeID,EntityValue) VALUES(10,'Ringo')
INSERT INTO @tbl(AttributeID,EntityValue) VALUES(11,'Lennon')
INSERT INTO @tbl(AttributeID,EntityValue) VALUES(11,'McCartney')
INSERT INTO @tbl(AttributeID,EntityValue) VALUES(11,'Harrison')
SELECT A.AttributeID,AttributeName,EntityValue FROM @tbl T
INNER JOIN @Attribute A
ON T.AttributeID=A.AttributeID
DECLARE @Tbl2 Table(
FirstName Varchar(MAX),
LastName Varchar(MAX)
)
INSERT INTO @Tbl2(FirstName,LastName) VALUES('John','Lennon')
INSERT INTO @Tbl2(FirstName,LastName) VALUES('Paul','McCartney')
INSERT INTO @Tbl2(FirstName,LastName) VALUES('George','Harrison')
INSERT INTO @Tbl2(FirstName) VALUES('Ringo')
SELECT * FROM @Tbl2
어떻게하면됩니까? –
CASE가 제공된 예제와 더 일치하도록 업데이트되었지만 IF/CASE 또는 PIVOT이 행을 열로 변환하는 유일한 방법입니다. –