Насколько я понимаю, вы хотите сделать расчет на основе разницы дат, а не на основе порядка строк, верно?
Если это так, если у вас есть такой стол
CREATE TABLE YourTable(
ACHQ float ,
RECTQ float,
DATE datetime)
INSERT INTO YourTable VALUES (100,10,'20100101')
INSERT INTO YourTable VALUES (200,20,'20110101')
INSERT INTO YourTable VALUES (300,30,'20120101')
INSERT INTO YourTable VALUES (400,40,'20130101')
INSERT INTO YourTable VALUES (500,50,'20140101')
INSERT INTO YourTable VALUES (600,60,'20150101')
вы можете сделать что-то вроде этого
SELECT
((c.ACHQ)/(c.RECTQ + cPreviousYear.RECTQ)/2) as 'AR'
FROM
YourTable c
LEFT JOIN YourTable cPreviousYear
ON YEAR(c.Date) - 1 = YEAR(cPreviousYear.Date)
Я упростил расчет, чтобы показать, что вы можете связать таблицу с самой собой непосредственно со строкой с требуемой разницей в датах и затем вычислить значение. Вы даже можете использовать ON DATEADD(y, -1, c.Date) = cPrevious.Date
, если хотите разницу в реальной дате
Извините, если я упустил момент.