我有一张像
这样的表格UserID Attribute Value
1 Name Peter
1 Sex male
1 Nationality UK
2 Name Sue
需要像
这样的结果UserId Name Sex Nationality .....
1 Peter male Uk
2 Sue .....
看起来像交叉表 - 在MS Access中,如果我采用First(Value),则有效 - 在T SQL中,我无法使用Value作为文本字段
有什么想法吗?
答案 0 :(得分:1)
DECLARE @TABLE TABLE (UserID INT, Attribute VARCHAR(20),Value VARCHAR(20))
INSERT INTO @TABLE VALUES
(1,'Name','Peter'),
(1,'Sex','male'),
(1,'Nationality','UK'),
(2,'Name','Sue')
SELECT * FROM @TABLE
PIVOT ( MAX(Value)
FOR Attribute
IN ([Name], [Sex], [Nationality]))P
结果集
╔════════╦═══════╦══════╦═════════════╗
║ UserID ║ Name ║ Sex ║ Nationality ║
╠════════╬═══════╬══════╬═════════════╣
║ 1 ║ Peter ║ male ║ UK ║
║ 2 ║ Sue ║ NULL ║ NULL ║
╚════════╩═══════╩══════╩═════════════╝