Följande funkar i SQL server 2008, borde funka i 2005 också (med undantag för datatyperna date och time, egentligen kanske du borde fundera på om inte start och slut ska vara datetime istället så funkar scriptet bättre om det är flera datum inblandade mellan start och slut, exempelvis start = 2009-10-01 23:50:00 och slut = 2009-10-02 01:00:00'. scriptet nedan kommer att räkna fel i det scenariot.
create table tid(id int identity, namn varchar(10), datum date, start time, slut time);
insert into tid (namn, datum, start, slut) values
('oskar', '2009-10-01', '19:00:00', '19:10:00'),
('oskar', '2009-10-01', '19:23:00', '19:30:00'),
('oskar', '2009-10-01', '19:33:00', '19:40:00'),
('håkan', '2009-10-01', '19:00:00', '19:15:00'),
('håkan', '2009-10-01', '19:27:00', '19:48:00'),
('håkan', '2009-10-01', '19:50:00', '20:40:00'),
('nisse', '2009-10-01', '20:00:00', '23:59:59'),
('nisse', '2009-10-02', '00:00:05', '10:00:00');
select namn, SUM(diff) diff from (
select t.namn, datediff(mi, cast(t.datum as datetime)+ cast(t.slut as datetime) - '1900-01-01', t3.start) as diff from tid t
outer apply (select MIN(id) id from tid t2 where t.id < t2.id and t2.namn = t.namn) t2
outer apply (select cast(t3.datum as datetime) + cast(t3.start as datetime) - '1900-01-01' as start from tid t3 where t3.id = t2.id) t3
) x group by namn;
namn diff
---------- -----------
håkan 14
nisse 1
oskar 16