Примечание
Я не заметил, что это был MySQL, который не поддерживает CTE. Вы можете определить временные таблицы, чтобы использовать это.
Это интересная проблема. Вам нужно соединить все буквы со всеми датами, а затем сосчитать предыдущие строки. Если вас не интересует наличие строк для букв с количеством отсчетов 0 для дат, возможно, вы могли бы просто сделать что-то вроде этого:
SELECT letter, date,
(SELECT COUNT(*)
FROM tbl tbl2
WHERE tbl2.letter = tbl1.letter
AND tbl2.date <= tbl1.date) AS total
FROM tbl
ORDER BY date, letter
/ удаленное решение CTE /
Решение без CTE
SELECT tblDates.[date], tblLetters.letter,
(SELECT COUNT(*)
FROM tblData tbl2
WHERE tbl2.letter = tblLetters.letter
AND tbl2.[date] <= tblDates.[date]) AS total
FROM (SELECT DISTINCT [date] FROM tblData) tblDates
CROSS JOIN (SELECT DISTINCT letter FROM tblData) tblLetters
ORDER BY tblDates.[date], tblLetters.letter