First Correct RouteID of Route Table as follows.
RouteId RouteName
1 ROUTE1
2 ROUTE2
3 ROUTE3
Then use following Query to obtain Result.
SELECT ROUTE1,ROUTE2,ROUTE3
FROM (
select rd.*,r.RouteName from [RouteData] rd inner join [route] r on rd.[RouteId]=r.[RouteId]
) as s
PIVOT
(
max(UserName)
FOR RouteName IN (ROUTE1,ROUTE2,ROUTE3)
)AS pvt
Dynamic Query for above
DECLARE @cols AS nvarchar(max), @query AS nvarchar(max);
SELECT @cols = STUFF(
(
SELECT ','+[RouteName]
FROM [route]
ORDER BY [RouteId]
FOR XML PATH(''), TYPE
).value( '.', 'NVARCHAR(MAX)' ), 1, 1, '');
PRINT @cols;
SET @query = N'SELECT '+@cols+N' from
(
select rd.*,r.RouteName from [RouteData] rd inner join [route] r on rd.[RouteId]=r.[RouteId]
) x
pivot
(
max(UserName)
for RouteName in ('+@cols+N')
) p ';
EXEC sp_executesql @query;
Output:
ROUTE1 ROUTE2 ROUTE3
ABC1 NULL NULL
ABC2 NULL NULL
NULL ABC3 NULL
NULL ABC4 NULL
NULL ABC5 NULL
NULL ABC6 NULL
NULL NULL ABC7
Assumption:
1. Following Table Name [route]
RouteId RouteName
1 ROUTE1
1 ROUTE2
1 ROUTE3
2. Following Table Name [RouteData]
Id UserName Area City RouteId
1 ABC1 XYZ1 PQR1 1
2 ABC2 XYZ2 PQR1 1
3 ABC3 XYZ3 PQR1 2
4 ABC4 XYZ4 PQR2 2
5 ABC5 XYZ5 PQR2 2
6 ABC6 XYZ6 PQR3 2
7 ABC7 XYZ7 PQR4 3