Я уверен, что это довольно тривиальная проблема, но я не уверен, что делать с 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
Я * думаю * Я понимаю, что здесь происходит, но что это первое поле «изменения»? – grapefrukt
Это ваш SUM из внутреннего подзапроса. Извините, я не заметил, что это когда-то стол, см. Сообщение об обновлении – Quassnoi