2017-07-18 21 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