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
プレ>