Try this:
SELECT [DATE], [DRIVER], [SALESMAN], [SALESEXEC]
FROM (SELECT * FROM YourTable) AS DT
PIVOT(SUM([AMOUNT]) FOR [ID] IN ([DRIVER], [SALESMAN], [SALESEXEC])) AS PT
ORDER BY [DATE]
[EDIT]
If you need dynamic columns, try this:
DECLARE @cols NVARCHAR(200)
SET @cols = STUFF((SELECT DISTINCT '],[' + [CATEGORYCODE]
FROM YourTable
ORDER BY '],[' + [CATEGORYCODE]
FOR XML PATH('')),1,2,'') + ']'
SELECT [DATE], @cols
FROM (SELECT * FROM YourTable) AS DT
PIVOT(SUM([AMOUNT]) FOR [ID] IN (@cols)) AS PT
ORDER BY [DATE]
[/EDIT]