SELECT
T1.TransactionID,
T1.MemberID,
Members.FirstName & " " & Members.LastName AS FullName,
T1.TransactionDate,
T1.FeeDue,
SUM(T2.FeeDue - T2.FeePaid) - (T1.Feedue - T1.FeePaid) AS Arrears,
T1.FeePaid,
SUM(T2.FeeDue - T2.FeePaid) AS BalanceDue,
(
SELECT
COUNT(*)
FROM
Members AS M1
INNER JOIN (
SELECT DISTINCT
MemberID
FROM
Transactions
) AS T2 ON T2.MemberID = M1.MemberID
WHERE
M1.LastName & M1.FirstName <= Members.LastName & Members.FirstName
) AS MemberIndex
FROM
(
Transactions AS T1
INNER JOIN Transactions AS T2 ON (
T2.TransactionID <= T1.TransactionID
OR T2.TransactionDate <> T1.TransactionDate
)
AND (T2.TransactionDate <= T1.TransactionDate)
AND (T2.MemberID = T1.MemberID)
)
INNER JOIN Members ON Members.MemberID = T1.MemberID
GROUP BY
T1.TransactionDate,
T1.FeeDue,
T1.FeePaid,
T1.TransactionID,
T1.MemberID,
Members.LastName,
Members.FirstName,
Members.FirstName & " " & Members.LastName
ORDER BY
Members.LastName,
Members.FirstName,
T1.MemberID,
T1.TransactionDate,
T1.TransactionID;