Ada beberapa cara berbeda agar Anda bisa mendapatkan hasil yang Anda inginkan. Mirip dengan @Sheela K R jawaban Anda dapat menggunakan fungsi agregat dengan ekspresi CASE tetapi dapat ditulis dengan cara yang lebih ringkas:
select
max(case when rowid = 1 then first end) First1,
max(case when rowid = 1 then last end) Last1,
max(case when rowid = 2 then first end) First2,
max(case when rowid = 2 then last end) Last2,
max(case when rowid = 3 then first end) First3,
max(case when rowid = 3 then last end) Last3,
max(case when rowid = 4 then first end) First4,
max(case when rowid = 4 then last end) Last4,
max(case when rowid = 5 then first end) First5,
max(case when rowid = 5 then last end) Last5
from yourtable;
Lihat SQL Fiddle dengan Demo .
Ini juga dapat ditulis menggunakan fungsi PIVOT, namun karena Anda ingin memutar beberapa kolom maka pertama-tama Anda ingin melihat unpivoting First
Anda dan Last
kolom.
Proses unpivot akan mengubah beberapa kolom Anda menjadi beberapa baris data. Anda tidak menentukan versi SQL Server yang Anda gunakan tetapi Anda dapat menggunakan SELECT
dengan UNION ALL
dengan CROSS APPLY
atau bahkan UNPIVOT
fungsi untuk melakukan konversi pertama:
select col = col + cast(rowid as varchar(10)), value
from yourtable
cross apply
(
select 'First', First union all
select 'Last', Last
) c (col, value)
Lihat SQL Fiddle dengan Demo . Ini mengubah data Anda menjadi format:
| COL | VALUE |
|--------|-------------|
| First1 | RandomName1 |
| Last1 | RandomLast1 |
| First2 | RandomName2 |
| Last2 | RandomLast2 |
Setelah data berada dalam beberapa baris, Anda dapat dengan mudah menerapkan fungsi PIVOT:
select First1, Last1,
First2, Last2,
First3, Last3,
First4, Last4,
First5, Last5
from
(
select col = col + cast(rowid as varchar(10)), value
from yourtable
cross apply
(
select 'First', First union all
select 'Last', Last
) c (col, value)
) d
pivot
(
max(value)
for col in (First1, Last1, First2, Last2,
First3, Last3, First4, Last4, First5, Last5)
) piv;
Lihat SQL Fiddle dengan Demo
Keduanya memberikan hasil dari:
| FIRST1 | LAST1 | FIRST2 | LAST2 | FIRST3 | LAST3 | FIRST4 | LAST4 | FIRST5 | LAST5 |
|-------------|-------------|-------------|-------------|-------------|-------------|-------------|-------------|-------------|-------------|
| RandomName1 | RandomLast1 | RandomName2 | RandomLast2 | RandomName3 | RandomLast3 | RandomName4 | RandomLast4 | RandomName5 | RandomLast5 |