Esistono diversi modi per ottenere il risultato desiderato. Simile a @Sheela K R's risposta puoi usare una funzione aggregata con un'espressione CASE ma può essere scritta in modo più conciso:
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;
Vedi SQL Fiddle con demo .
Questo potrebbe anche essere scritto usando la funzione PIVOT, tuttavia dal momento che vuoi ruotare più colonne, vorresti prima cercare di annullare il pivot del tuo First
e Last
colonne.
Il processo unpivot convertirà le tue colonne multiple in più righe di dati. Non hai specificato quale versione di SQL Server stai utilizzando, ma puoi utilizzare un SELECT
con UNION ALL
con CROSS APPLY
o anche il UNPIVOT
funzione per eseguire la prima conversione:
select col = col + cast(rowid as varchar(10)), value
from yourtable
cross apply
(
select 'First', First union all
select 'Last', Last
) c (col, value)
Vedi SQL Fiddle con demo . Questo converte i tuoi dati nel formato:
| COL | VALUE |
|--------|-------------|
| First1 | RandomName1 |
| Last1 | RandomLast1 |
| First2 | RandomName2 |
| Last2 | RandomLast2 |
Una volta che i dati sono in più righe, puoi facilmente applicare la funzione 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;
Vedi SQL Fiddle con demo
Entrambi danno un risultato di:
| FIRST1 | LAST1 | FIRST2 | LAST2 | FIRST3 | LAST3 | FIRST4 | LAST4 | FIRST5 | LAST5 |
|-------------|-------------|-------------|-------------|-------------|-------------|-------------|-------------|-------------|-------------|
| RandomName1 | RandomLast1 | RandomName2 | RandomLast2 | RandomName3 | RandomLast3 | RandomName4 | RandomLast4 | RandomName5 | RandomLast5 |