Det finns några olika sätt som du kan få det resultat du vill ha. Liknar @Sheela K R's svar du kan använda en aggregatfunktion med ett CASE-uttryck men det kan skrivas på ett mer kortfattat sätt:
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-fiol med demo .
Detta kan också skrivas med PIVOT-funktionen, men eftersom du vill pivotera flera kolumner så vill du först titta på att ta bort din First
och Last
kolumner.
Unpivot-processen kommer att konvertera dina flera kolumner till flera rader med data. Du har inte angett vilken version av SQL Server du använder men du kan använda en SELECT
med UNION ALL
med CROSS APPLY
eller till och med UNPIVOT
funktion för att utföra den första konverteringen:
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-fiol med demo . Detta konverterar dina data till formatet:
| COL | VALUE |
|--------|-------------|
| First1 | RandomName1 |
| Last1 | RandomLast1 |
| First2 | RandomName2 |
| Last2 | RandomLast2 |
När data finns i flera rader kan du enkelt använda 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;
Båda ger ett resultat av:
| FIRST1 | LAST1 | FIRST2 | LAST2 | FIRST3 | LAST3 | FIRST4 | LAST4 | FIRST5 | LAST5 |
|-------------|-------------|-------------|-------------|-------------|-------------|-------------|-------------|-------------|-------------|
| RandomName1 | RandomLast1 | RandomName2 | RandomLast2 | RandomName3 | RandomLast3 | RandomName4 | RandomLast4 | RandomName5 | RandomLast5 |