Есть ли способ повернуть таблицу Entity-Attribute?
Я хочу перевернуть все строки в столбцы, независимо от количества различных атрибутов.
Вот пример того, чего я хочу достичь. В примере используются два атрибута: FirstName, LastName. Но в реальной базе данных есть тысячи атрибутов, и я хочу поместить их в столбцы для целей отчетности.
Я не хочу писать 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