Tsql使用文本值对表进行非规范化

时间:2014-01-24 09:49:33

标签: tsql pivot

我有一张像

这样的表格
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作为文本字段

有什么想法吗?

1 个答案:

答案 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        ║
╚════════╩═══════╩══════╩═════════════╝
相关问题