Sample Datadeclare @t table ([name] varchar(20),in_time datetime, out_time datetime)insert @tselect 'Alex', '2008-08-12 08:00', '2008-08-12 16:00' union allselect 'Alex', '2008-09-12 08:00', '2008-09-12 16:00' union allselect 'Alex', '2008-10-12 09:00', '2008-10-12 17:00' union allselect 'George', '2008-08-12 08:00', '2008-08-12 16:00' union allselect 'George', '2008-09-12 08:00', '2008-09-12 16:00' union allselect 'George', '2008-10-12 16:00', '2008-10-12 22:00'
QuerySELECT [name], max(CASE convert(VARCHAR(10),in_time,111) WHEN '2008/08/12' THEN convert(VARCHAR(8),in_time,108) + '-' + convert(VARCHAR(8),out_time,108) ELSE NULL END) AS [12/08/2008], max(CASE convert(VARCHAR(10),in_time,111) WHEN '2008/09/12' THEN convert(VARCHAR(8),in_time,108) + '-' + convert(VARCHAR(8),out_time,108) ELSE NULL END) AS [12/09/2008], max(CASE convert(VARCHAR(10),in_time,111) WHEN '2008/10/12' THEN convert(VARCHAR(8),in_time,108) + '-' + convert(VARCHAR(8),out_time,108) ELSE NULL END) AS [12/10/2008] FROM @t GROUP BY [name]
Resultname 12/08/2008 12/09/2008 12/10/2008-------------------- ----------------- ----------------- -----------------Alex 08:00:00-16:00:00 08:00:00-16:00:00 09:00:00-17:00:00George 08:00:00-16:00:00 08:00:00-16:00:00 16:00:00-22:00:00