Der er et par forskellige måder, hvorpå du kan få det resultat, du ønsker. Svarer til @Sheela K R's svar du kan bruge en aggregeret funktion med et CASE-udtryk, men det kan skrives på en mere kortfattet måde:
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;
Se SQL Fiddle with Demo .
Dette kunne også skrives ved hjælp af PIVOT-funktionen, men da du ønsker at pivotere flere kolonner, vil du først se på at fjerne pivotering af din First
og Last
kolonner.
Unpivot-processen vil konvertere dine flere kolonner til flere rækker af data. Du har ikke angivet, hvilken version af SQL Server du bruger, men du kan bruge en SELECT
med UNION ALL
med CROSS APPLY
eller endda UNPIVOT
funktion til at udføre den første konvertering:
select col = col + cast(rowid as varchar(10)), value
from yourtable
cross apply
(
select 'First', First union all
select 'Last', Last
) c (col, value)
Se SQL Fiddle with Demo . Dette konverterer dine data til formatet:
| COL | VALUE |
|--------|-------------|
| First1 | RandomName1 |
| Last1 | RandomLast1 |
| First2 | RandomName2 |
| Last2 | RandomLast2 |
Når dataene er i flere rækker, kan du nemt anvende PIVOT-funktionen:
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;
Begge giver et resultat af:
| FIRST1 | LAST1 | FIRST2 | LAST2 | FIRST3 | LAST3 | FIRST4 | LAST4 | FIRST5 | LAST5 |
|-------------|-------------|-------------|-------------|-------------|-------------|-------------|-------------|-------------|-------------|
| RandomName1 | RandomLast1 | RandomName2 | RandomLast2 | RandomName3 | RandomLast3 | RandomName4 | RandomLast4 | RandomName5 | RandomLast5 |