UNPIVOT
ではこれを達成できないと思う理由がわかりません およびPIVOT
:
select [1], [2], [3], [4], [5]
from
(
select *
from
(
select col1, col2, col3,
row_number() over(order by col1) rn
from yourtable
) x
unpivot
(
val for col in (col1, col2, col3)
) u
) x1
pivot
(
max(val)
for rn in ([1], [2], [3], [4], [5])
) p
SQL Fiddle withDemo を参照してください。 。これは、必要に応じて動的に実行することもできます。
編集します。列の順序を維持する必要がある場合は、row_number()
を適用する次のようなものを使用できます。 order by
を使用せずに テーブルの列の1つにあります(の使用に関する記事です。非決定論的な行番号
):
select [1], [2], [3], [4], [5]
from
(
select *
from
(
select col1, col2, col3,
row_number()
over(order by (select 1)) rn
from yourtable
) x
unpivot
(
val for col in (col1, col2, col3)
) u
) x1
pivot
(
max(val)
for rn in ([1], [2], [3], [4], [5])
) p;
SQL Fiddle withDemo を参照してください。