我想将单列结果从查询拆分成4列:SQL单柱拆分成多发列
样品来源:(Select [FirstName from User
)
彼得
玛丽
约翰
蒂娜
卡尔
简
比尔
莎拉
我想是这样的:
Column1 Column2 Column3 Column4
Peter Mary John Tina
Carl Jane Bill Sarah
我想将单列结果从查询拆分成4列:SQL单柱拆分成多发列
样品来源:(Select [FirstName from User
)
彼得
玛丽
约翰
蒂娜
卡尔
简
比尔
莎拉
我想是这样的:
Column1 Column2 Column3 Column4
Peter Mary John Tina
Carl Jane Bill Sarah
您需要有一个独特的专栏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
在这里,您有选项吨,寻找一个更适合你的情况: Create columns from list of values
上的链接引导到even more information
+1,但我认为col的row_number()也需要'-1'。 – 2012-07-09 08:51:32
谢谢!我确实使用了具有不同Modulus并加入rownums的4张临时表,但CTE看起来更好! – callisto 2012-07-09 08:54:54
@NikolaMarkovinović - 确实,或者在输出“1,2,3,0,1,2,3,0”时改变别名需求。根据您的建议进行编辑。 – 2012-07-09 08:55:37