Вы просто хотите накопительную сумму, которая предоставляется с помощью оконных функций. Вы можете получить значения для всех дней, используя:
select date, itemcode,
sum(sum(case when rec = 'Rec' then qty else - qty end)) over
(partition by itemcode
order by date
rows between unbounded preceding and 1 preceding
) as openingstock
sum(case when doctype = 'FA' then qty end) as fa,
sum(case when doctype = 'GRN' then qty end) as grn,
sum(sum(case when rec = 'Rec' then qty else - qty end)) over
(partition by itemcode order by date) as closingstock
from t
group by date, itemcode;
Если вы хотите выбрать конкретную дату, вы можете использовать ее как подзапрос.