2017-07-18 58 views
1

我有一個表,一列像這樣:轉換單列單列

+-------------+ 
|(Column Name)| 
+-------------+ 
|Data1  | 
+-------------+ 
|Data2  | 
+-------------+ 
|Data3  | 
+-------------+ 
|Data4  | 
+-------------+ 
|Data5  | 
+-------------+ 

我想要做什麼,似乎很簡單,但我無法找到它的任何實例的任何地方。我想要的是上述列轉換成單排,像這樣:

+-------+-------+-------+-------+-------+ 
| (Col1)| (Col2)| (Col3)| (Col4)| (Col5)| 
+-------+-------+-------+-------+-------+ 
| Data1 | Data2 | Data3 | Data4 | Data5 | 
+-------+-------+-------+-------+-------+ 

我敢肯定,這是一個非常簡單的任務,但我非常新到操作數據庫。我感謝任何幫助。

+2

樞軸將幫助你 – SouXin

+2

谷歌:動態數據透視在Sql Server –

回答

3

你可以做支點如下:

Select * from (
    Select colname, RowN = Row_Number() over (order by colname) from #cols 
    ) a 
    pivot (max(colname) for RowN in ([1],[2],[3],[4],[5])) p 

對於列

的動態列表
Declare @cols nvarchar(max) 
Declare @query nvarchar(max) 

Select @cols = stuff((select ','+QuoteName(Row_Number() over (Order by (Select NULL))) from #cols for xml path('')),1,1,'') 
Select @query = ' Select * from (
    Select colname, RowN = Row_Number() over (order by colname) from #cols 
    ) a 
    pivot (max(colname) for RowN in (' + @cols + ')) p ' 

Exec sp_executesql @query 
+0

@ Kennan謝謝!很棒! –

1

透視查詢:

CREATE TABLE Sales ([Month] VARCHAR(20) ,SaleAmount INT) 

INSERT INTO Sales VALUES ('January', 100) 
INSERT INTO Sales VALUES ('February', 200) 
INSERT INTO Sales VALUES ('March', 300) 

SELECT * FROM SALES 

例子:

SELECT  [January] 
      , [February] 
      , [March] 
FROM    ( SELECT    [Month] 
                  , SaleAmount 
          FROM      Sales 
        ) p PIVOT ( SUM(SaleAmount) 
                    FOR [Month]  
         IN ([January],[February],[March]) 
                  ) AS pvt