Try this:
SET DATEFORMAT dmy;
CREATE TABLE #tmp (id INT, date DATETIME, hours INT)
INSERT INTO #tmp (id, date, hours)
SELECT 1, '22/07/2013', 4
UNION ALL SELECT 1, '23/07/2013', 5
UNION ALL SELECT 10, '22/07/2013', 4
UNION ALL SELECT 10, '23/07/2013', 3
UNION ALL SELECT 11, '24/07/2013', 8
UNION ALL SELECT 6, '25/07/2013', 8
UNION ALL SELECT 6, '26/07/2013', 8
DECLARE @cols VARCHAR(300)
DECLARE @dt VARCHAR(2000)
DECLARE @pt VARCHAR(4000)
SET @cols = STUFF((SELECT DISTINCT '],[' + CONVERT(VARCHAR(10),O.date,121)
FROM #tmp AS O
ORDER BY '],[' + CONVERT(VARCHAR(10),O.date,121)
FOR XML PATH('')),1,2,'') + ']'
SET @dt = N'SELECT id, CONVERT(VARCHAR(10),date,121) AS date, hours
FROM #tmp'
EXEC(@dt)
SET @pt = N'SELECT id, ' + @cols + ' ' +
'FROM(' + @dt + ') AS DT ' +
'PIVOT(MAX(hours) FOR date IN(' + @cols + ')) AS PT ' +
'ORDER BY id'
EXEC(@pt)
DROP TABLE #tmp