This is a bit of a future proof answer, in case the number of roles you have can change; thus you need to change your SQL. This avoids that need, but does (like Gordan's current answer) require 2 scans of the table:
CREATE TABLE Employee (ID int, [Role] varchar(10), Employee varchar(15));
INSERT INTO Employee
VALUES (1, 'Manager','Steve'),
(2, 'Consultant','Jayne');
GO
--Hard coded SQL solution
SELECT ID,
CASE [Role] WHEN 'Manager' THEN Employee END AS Manager,
CASE [Role] WHEN 'Consultant' THEN Employee END AS Consultant
FROM Employee;
GO
--Now, let's add a another role, and try the SQL again:
INSERT INTO Employee
VALUES (3, 'Director','Sally');
SELECT ID,
CASE [Role] WHEN 'Manager' THEN Employee END AS Manager,
CASE [Role] WHEN 'Consultant' THEN Employee END AS Consultant
FROM Employee;
--Unsurprisingly, Sally doesn't appear, but a "blank" row does
GO
--Dynamic SQL solution:
DECLARE @SQL nvarchar(MAX);
SET @SQL = N'SELECT ID,' +NCHAR(10) +
STUFF((SELECT DISTINCT N',' + NCHAR(10) +
N' CASE [Role] WHEN ' + QUOTENAME([Role],N'''') + N' THEN Employee END AS ' + QUOTENAME([Role])
FROM Employee
FOR XML PATH(N'')),1,2,N'') + NCHAR(10) +
N'FROM Employee;';
PRINT @SQL; --your best friend
EXEC sp_executesql @SQL;
GO
DROP TABLE Employee;