Я нашел имена таблиц и полей в истории редактирования вашего вопроса, поэтому использовал эти имена в этом ответе. Вы не предоставили пример данных record_matYields, поэтому я создал свои собственные и надеюсь, что они подходят:
id reportDate gainOrLoss
1 12/28/2011 $1,500.00
2 12/29/2011 $500.00
3 12/30/2011 $1,000.00
4 1/2/2012 $10.00
5 1/3/2012 $4,500.00
6 1/4/2012 $900.00
Сначала я создал qryMonthlyLosses . Вот SQL и вывод:
SELECT
Year(reportDate) AS reportYear,
Month(reportDate) AS reportMonth,
Min(y.reportDate) AS MinOfreportDate,
Sum(y.gainOrLoss) AS SumOfgainOrLoss
FROM record_matYields AS y
GROUP BY
Year(reportDate),
Month(reportDate);
reportYear reportMonth MinOfreportDate SumOfgainOrLoss
2011 12 12/28/2011 $3,000.00
2012 1 1/2/2012 $5,410.00
Я использовал этот первый запрос для создания другого, qryCumulativeLossesByMonth :
SELECT
q.reportYear,
q.reportMonth,
q.MinOfreportDate,
q.SumOfgainOrLoss,
(
SELECT
Sum(z.gainOrLoss)
FROM record_matYields AS z
WHERE z.reportDate < q.MinOfreportDate
) AS PreviousGainOrLoss
FROM qryMonthlyLosses AS q;
reportYear reportMonth MinOfreportDate SumOfgainOrLoss PreviousGainOrLoss
2011 12 12/28/2011 $3,000.00
2012 1 1/2/2012 $5,410.00 $3,000.00
Наконец, я использовал qryCumulativeLossesByMonth в качестве источника данных в запросе, который преобразует выходные данные в соответствии с требуемым форматом.
SELECT
q.reportYear,
MonthName(q.reportMonth) AS [Month],
q.SumOfgainOrLoss AS Losses,
q.SumOfgainOrLoss +
IIf(q.PreviousGainOrLoss Is Null,0,q.PreviousGainOrLoss)
AS Cum
FROM qryCumulativeLossesByMonth AS q;
reportYear Month Losses Cum
2011 December $3,000.00 $3,000.00
2012 January $5,410.00 $8,410.00
Возможно, вы могли бы преобразовать это в один запрос, используя подзапросы вместо отдельных именованных запросов. Я использовал этот пошаговый подход, потому что надеялся, что его будет легче понять.
Редактировать : Я вернул полное имя с помощью функции MonthName (). Если вам нужно сокращенное название месяца, передайте True в качестве второго параметра этой функции. Любой из них должен работать:
MonthName(q.reportMonth, True) AS [Month]
MonthName(q.reportMonth, -1) AS [Month]