I have the following table
x
UserName UserId
----- ----
Bob 445
Bob 450
Rachel 512
Rachel 520
Rachel 570
Simon 771
Simon 760
and I am trying to pivot it so that a new column is created for each username, with UserID’s listed per UserName
Bob Rachel Simon
445 512 771
450 520 760
570
Advertisement
Answer
Just in case you were looking for a dynamic pivot
Example
Declare @SQL varchar(max) = '
Select *
From (
Select *
,RN = row_number() over (partition by username order by UserId)
from #YourTable
) A
Pivot (max(UserID) For [UserName] in (' + stuff((Select distinct ',' + QuoteName([UserName]) From #YourTable Order By 1 For XML Path('')),1,1,'') + ') ) p
'
--Print @SQL
Exec(@SQL);
Returns
RN Bob Rachel Simon
1 445 512 760
2 450 520 771
3 NULL 570 NULL