5

我想将查询中的单列结果拆分为 4 列:

样本来源: ( Select [FirstName from User)
Peter
Mary
John
Tina
Carl
Jane
Bill
Sarah

我想看起来像这样:

Column1   Column2   Column3   Column4  
Peter     Mary      John      Tina  
Carl      Jane      Bill      Sarah
4

2 回答 2

8

您需要有一个独特的列来ORDER BY获得确定性的结果,但是这些方面的东西应该可以工作。

;WITH T
     AS (SELECT [FirstName],
                ( ROW_NUMBER() OVER (ORDER BY (SELECT 0)) - 1 ) / 4 AS Row,
                ( ROW_NUMBER() OVER (ORDER BY (SELECT 0)) - 1 ) % 4 AS Col
         FROM   [User])
SELECT [0] AS Column1,
       [1] AS Column2,
       [2] AS Column3,
       [3] AS Column4
FROM   T PIVOT (MAX(name) FOR Col IN ([0], [1], [2], [3])) P 
ORDER BY Row
于 2012-07-09T08:43:33.483 回答
1

在这里,您有大量选项,寻找更适合您的情况的选项: 从值列表创建列

上一个链接指向更多信息

于 2012-07-09T08:26:48.507 回答