2010-06-07 50 views
1

我已經研究了數據透視表,但我認爲它需要一個我不需要的聚合函數(我認爲)。如何將行數據轉換爲SQL中的列

我查詢的結果是這樣的

Name   Property Name  PropertyValue 
    ----------  ----------   ---------- 
    lorem   Work Phone   000.111.2020 
    ipsum   Email    [email protected] 

Name   Work Phone    Email 
---------- ----------   ---------- 
lorem  000.111.2020  [email protected] 
ipsum  001.101.2010  [email protected] 

我不認爲我應該使用支點在這裏,因爲我並不需要聚合什麼,我只是想行數據成爲一列。

回答

2

PIVOT需要骨料,是的,你會如果你的數據是需要一個總:

Name   Property Name  PropertyValue 
    ----------  ----------   ---------- 
    lorem   Work Phone   000.111.2020 
    lorem   Work Phone   999.999.9999 
    ipsum   Email    [email protected] 

鑑於知道你的數據是唯一的,你可以使用MIN或MAX在數據透視。

注意:您的示例輸出與您的exmaple輸入不匹配。

http://cloudexchange.cloudapp.net/stackoverflow/q/2589

-- SO2993412 

DECLARE @t AS TABLE (Name varchar(25), [Property Name] varchar(25), PropertyValue varchar(25)) 
INSERT INTO @t VALUES ('lorem', 'Work Phone', '000.111.2020') 
    ,('ipsum', 'Email', '[email protected]') 

SELECT Name, [Work Phone], [Email] 
FROM @t 
PIVOT (MAX(PropertyValue) FOR [Property Name] IN ([Work Phone], [Email])) AS pvt 
3

用途:

SELECT t.name, 
     MAX(CASE WHEN t.property = 'Work Phone' THEN t.value ELSE NULL END), 
     MAX(CASE WHEN t.property = 'Email' THEN t.value ELSE NULL END) 
    FROM TABLE t 
GROUP BY t.name 

你必須使用聚合函數,否則你必須在地方空值的多個行。