将单列转换为单行

A.S*_*ekl 1 t-sql sql-server unpivot

我有一个单列的表,如下所示:

+-------------+
|(Column Name)|
+-------------+
|Data1        |
+-------------+
|Data2        |
+-------------+
|Data3        |
+-------------+
|Data4        |
+-------------+
|Data5        |
+-------------+
Run Code Online (Sandbox Code Playgroud)

我想做的事情似乎很简单,但我无法在任何地方找到它的任何例子.我想要的是将上面的列转换为单行,如下所示:

+-------+-------+-------+-------+-------+
| (Col1)| (Col2)| (Col3)| (Col4)| (Col5)|
+-------+-------+-------+-------+-------+
| Data1 | Data2 | Data3 | Data4 | Data5 |
+-------+-------+-------+-------+-------+
Run Code Online (Sandbox Code Playgroud)

我确信这是一项非常简单的任务,但我对使用数据库非常陌生.我感谢任何帮助.

Kan*_*amy 6

您可以执行以下操作:

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
Run Code Online (Sandbox Code Playgroud)

对于动态列列表

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
Run Code Online (Sandbox Code Playgroud)