我想將單列結果從查詢拆分成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