Используя оператор деления и по модулю и поворачивая его, вы можете сделать это следующим образом:
select [1],[2],[3],[4],[5],[6],[7],[8]
FROM
(select names,
1 + ((row_number() over (order by names) - 1) / 8) as rn1, -- to mark the iteration
1 + ((row_number() over (order by names) - 1) % 8) as rn2 -- to mark the column to be pivoted
from test) tbl
pivot
(
max(names)
for rn2 in ([1],[2],[3],[4],[5],[6],[7],[8])
) piv;
fiddle