Разность как раз и делается всегда между колонками, что бы сделать разность между строками нужно саб шеильту писать. А так - запросто. Какой SQL у тебя? 2005, 2008 или где?
Разность между любыми двумя датами достается функцией datediff, первым параметром которой как раз и идет единица времени в которой ты хочешь получить эту разность. Например ss,mi, dd,mm,yyyy - секунды, минуты, дни, месяцы или годы соответственно. Подробнее в хелпе по поиску datediff.
declare @StartDate datetime
declare @EndDate datetime
set @StartDate = getdate()
set @EndDate = dateadd(mi, -3294, getdate())
select datediff(mi, @StartDate,@EndDate)
select datediff(dd, @StartDate,@EndDate)
select datediff(m, @StartDate,@EndDate)
Если тебе нужен подсчет в месяц, то тебе нужен и GROUP BY по месяцу и году. Значит понадобиться скорее всего еще и функции datepart. Соответственно надо уточнить по месяцу и году какой из дат - начала или конца?
Не очень понятно какое именно у тебя затруднение и какая связка между двумя таблицами (inner, left...) , я строение базы твоей не вижу и запроса не знаю. Но скорее всего будет что-то в этом роде:
create table T1 (
Id int NOT NULL,
DateStart datetime,
DateEnd datetime,
)
create table T2 (
Id int NOT NULL,
Note1 varchar(20) NULL,
Note2 varchar(20) NULL
)
insert into T1 select 1, dateadd(mi, -10, getdate()), getdate()
insert into T1 select 2, dateadd(mi, -20, getdate()), getdate()
insert into T1 select 3, dateadd(mi, -30, getdate()), getdate()
insert into T1 select 4, dateadd(mi, -40, getdate()), getdate()
insert into T2 select 1, 'ku','ku'
insert into T2 select 2, 'ku-ku','ku-ku'
insert into T2 select 3, 'ku-ku-ku','ku-ku-ku'
insert into T2 select 4, 'ku-ku-ku-ku','ku-ku-ku-ku'
select *, datediff(mi,DateStart, DateEnd) as datediff_in_mi from T1
select * from T2
select datepart(mm, DateStart), datepart(yyyy, DateStart), SUM(datediff(mi,DateStart, DateEnd)) as SumInMinutes
from T1 inner join T2
on T1.Id = T2.Id
group by datepart(mm, DateStart), datepart(yyyy, DateStart)
drop table T1
drop table T2
Опять таки, стоит не забывать, что функция datediff округляет до единиц вычисления, так что стоит подсчитать разницу в секундах и разделить ее после на 60.0 (обязательно с точкой, иначе будет опять только целая часть вычисления и не забыть потом засунуть результат во что-то, типа float real или numeric)