SQL

SQL разница между текущим месяцем и последним месяцем

Добрый день. Помогите пожалуйста, я скоро с ума сойду, но я не понимаю, как это сделать. У меня есть небольшая база данных с тремя таблицами. Вот её структура: Мне нужно показать суммарные объемы потребления по каждой услуге каждого счетчика за каждый месяц. Это я сделала: SELECT CounterHouse_Part.HouseMeter_code AS [Код счётчика], CounterHouse_Part.DateCalc AS [Расч. месяц], spr_Service.Name AS [Название услуги], CounterHouse_Part.VolumeVdn AS [Объем ИП], CounterHouse_Part.VolumeIdls AS [Объем ОДН] FROM CounterHouse_Part INNER JOIN spr_HouseMeter ON CounterHouse_Part.HouseMeter_code = spr_HouseMeter.Code INNER JOIN spr_Service ON spr_HouseMeter.Code = spr_Service.Code ORDER BY [Код счётчика], [Расч. месяц], [Название услуги] К первой выборке добавить разницу в объеме на индивидуальное потребление между текущим месяцем и последним месяцем, за который есть показания, -- для каждого счетчика по каждой услуге. Так например для счетчика housemeter_code = 2, для услуги 1, в расчетном месяце 2016-05-01 по значению VolumeIDLS известны показания 325. Последними известными показаниями по этому же счетчику по этой же услуге, являются показания за 2016-03-01 со значением 300. Соответственно разница между ними составляет 25 единиц. Я начала делать, но не могу понять как добавить разницу между первым и последним и что к чему привязать: SELECT CounterHouse_Part.HouseMeter_code AS [Код счётчика], CounterHouse_Part.DateCalc AS [Расч. месяц], spr_Service.Name AS [Название услуги], ? ? ? ? ? ? AS [Разница] FROM CounterHouse_Part INNER JOIN spr_HouseMeter ON CounterHouse_Part.HouseMeter_code = spr_HouseMeter.Code INNER JOIN spr_Service ON spr_HouseMeter.Code = spr_Service.Code GROUP BY CounterHouse_Part.HouseMeter_code, CounterHouse_Part.DateCalc, spr_Service.Name ORDER BY [Код счётчика], [Расч. месяц], [Название услуги]
Ответы
исключи [Код счётчика] из группировки, так как он уникален и не даст сгруппировать по остальным полям
Хорошо. Но как саму разницу найти?
здесь нужно использовать "оконные функции", которые позволяют ранжировать записи. Т.е., как вариант, сперва выборку получить чтобы в одной строке были и текущие показатели, и показатели предыдущего месяца. Это будет вложенный запрос. А над ним уже запрос, считающий итоговую разницу и остальные joinы.