Я уверен, что это довольно тривиальная проблема, но я не уверен, что Google, чтобы найти решение.
У меня есть таблица, которая выглядит так:
CREATE TABLE IF NOT EXISTS `transactions` (
`name` text collate utf8_swedish_ci NOT NULL,
`value` decimal(65,2) NOT NULL,
`date` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_swedish_ci ROW_FORMAT=COMPACT;
Я заполняю это, вырезая и вставляя данные из моей службы интернет-банкинга.
Значение может быть отрицательным или положительным значением, то, что и дата и имя должны быть довольно очевидными;)
Я создал запрос, чтобы я мог видеть свою нижнюю строку за каждый месяц:
SELECT sum(`value`) as 'change', DATE_FORMAT(`date`, '%M %Y') as 'month'
FROM `transactions`
WHERE 1
GROUP BY year(`date`), month(`date`)
Теперь я хотел бы добавить общую сумму накопленных денег на счете в конце месяца в качестве дополнительного столбца.
SELECT sum(`value`) as 'change', DATE_FORMAT(`date`, '%M %Y') as 'month',
(SELECT sum(`value`) FROM `transactions` WHERE `date` <= 123) as 'accumulated'
FROM `transactions`
WHERE 1
GROUP BY year(`date`), month(`date`)
123 - это не совсем то, чего я хочу, но я не понимаю, как получить результат из моего DATE_FORMAT внутри этого подзапроса.
Это даже правильный способ решения проблемы?
Это в основном личное упражнение (выполняется на очень маленьком наборе данных), поэтому меня не очень беспокоит производительность, читаемый SQL гораздо важнее.
Я использую таблицу InnoDB в MySQL 5.0.45