Reputation: 131
I'm looking for an efficient way to convert Employee records rows to automatic columns in SQL Server, I heard that PIVOT is not very fast, and I need to deal with lot of records.
I have data records like this below
EmployeeNumber Employee Name Account Number
--------------------------------------------------
100204 Brody, David 4125641146
100204 Brody, David 5300880081
100239 Moland, Luke 34901876
100239 Moland, Luke 0441360299
This is my result: employees have multiple account numbers, I want look like my data
EmployeeNumber Employee Name AccountNumber AccountNumber1
-----------------------------------------------------------------
100204 Brody, David 4125641146 5300880081
100239 Moland, Luke 34901876 0441360299
How can I build the result? Can anyone please help me to get my result ?
Upvotes: 0
Views: 83
Reputation: 37483
You can try below way
select EmployeeNumber,EmployeeName,
max(case when rn=1 then AccountNumber end) as AccountNumber ,
max(case when rn=2 then AccountNumber end) as AccountNumber1
from
(
select EmployeeNumber, EmployeeName, AccountNumber,row_number() over(partition by EmployeeName order by AccountNumber) as rn
from tablename
)A group by EmployeeNumber,EmployeeName
Upvotes: 1