2014-01-24 62 views
1

我有一個像TSQL非規範化文本表中的值

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,如果我拿第一的作品(價值) - 在T SQL我不能讓它與價值作爲文本字段

任何想法?

+2

'選擇作爲PIV *從表(([姓名],[性別],[國籍])樞軸分鐘(用戶ID),用於Atrrribute);按用戶ID分組' –

+0

是的 - 但名稱,性別,國籍是datadriven - 我不知道我擁有哪些屬性 – user3231451

+0

@ vijaykumar-hadalgiv,不錯的工作先生。以創紀錄的時間打敗我。 – 2014-01-24 09:56:24

回答

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  ║ 
╚════════╩═══════╩══════╩═════════════╝