Sorry, here is the data.
--===== If the test table already exists, drop it
IF OBJECT_ID('TempDB..#mytable','U') IS NOT NULL
DROP TABLE #mytable
--------Create test table----------
CREATE TABLE #mytable
(
DateStart DATETIME,
DateEnd DATETIME
)
---------Sample Data-------
Insert into #mytable (DateStart,DateEnd)
Select '2013-06-03 08:00:00.000', '2013-06-05 17:00:00.000' UNION ALL
Select '2013-06-07 14:00:00.000', '2013-06-07 15:00:00.000' UNION ALL
Select '2013-06-08 08:00:00.000', '2013-06-08 09:00:00.000' Union ALL
Select '2013-06-27 08:00:00.000', '2013-06-28 17:00:00.000'
--------What i Tried-----
select * from #mytable
select
Convert(date,DateStart)as DateStart,
SUM(case
when Convert(time,DateEnd) < '12:00' then dateDiff(hh,Convert(time,DateStart), Convert(time,DateEnd))
when Convert(time,DateStart) < '12:00' then dateDiff(hh,Convert(time,DateStart), Convert(time,'12:00'))
else 0
end) as AM,
SUM(case
when Convert(time,DateStart) > '12:00' then dateDiff(hh,Convert(time,DateStart), Convert(time,DateEnd))
When Convert(time,DateEnd) > '12:00' then dateDiff(hh,Convert(time,'12:00'), Convert(time,DateEnd))
else 0
end) as PM
from #myTable group by DateStart
---Problem: Does not take into accout mutiple days--