2016-02-23 65 views
0

如何使用單列來旋轉表格。自定義名稱爲columnNames的數據透視表

我的select查詢的結果集包含單列和三行。 即我的選擇查詢,看起來像: -

contactList table have following columns. 
ContactID, PhNumbers, PhTYpe, ContactPersonID 

select PhNumbers,PhType from contactList where ContactPersonID=3 

PhNumbers  PhType 
1234567890  1 
3456789013  2 
4545466756  3 

這3個行對應3種類型的電話號碼

我需要這樣的

homePhone  MobilePhone  WorkPhone 
1234567890 3456789013  4545466756 
+0

什麼是服務器版本?只有三種手機可以使用?如何決定哪種類型的? –

+0

是的。在contactList我有phoneType也。我可以用PhoneType做任何事情嗎? ? – Sahi

+0

需要更多信息。顯示錶格的方案。還要添加sql server版本。 –

回答

0

輸出得到了答案。謝謝你們的幫助。

SELECT [1] as HomePhone, [2] as MobilePhone,[3] as WorkPhone, 
FROM 
    (select PhNumbers,PhType from contactList where ContactPersonID=3) AS  SourceTable 
PIVOT 
(
MAX(PhNumbers) 
FOR PhType IN ([1],[2],[3]) 
) AS PivotTable; 
+0

我在這裏使用了聚合函數。有沒有其他的選擇。任何幫助建議。 – Sahi

1
DECLARE 
    @SQL varchar(MAX), 
    @ColumnList varchar(MAX) 

SELECT @ColumnList= 
     COALESCE(@ColumnList + ',','') + QUOTENAME(PhNumbers) 
FROM 
(
     SELECT DISTINCT PhNumbers 
     FROM contactList 
) T 


SET @SQL = ' 
WITH PivotData AS 
(
     SELECT PhNumbers 
     FROM contactList 
) 
SELECT 
    ' + @ColumnList + ' 
FROM 
    PivotData 
PIVOT 
(
    MAX(PhNumbers) 
    FOR PhNumbers 
    IN (' + @ColumnList + ') 
) AS PivotResult' 

EXEC (@SQL) 
0

嘗試此查詢

SELECT 1,2,3 FROM (SELECT PhNumbers,PhType FROM contactList其中ContactPersonID = 3) PIVOT(MAX(PhNumbers)FOR PhType IN (1, 2, 3))r

相關問題