【发布时间】:2009-05-27 12:18:16
【问题描述】:
我确定这是一个相当微不足道的问题,但我不确定要通过谷歌搜索什么来找到解决方案。
我有一张如下所示的表格:
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 更为重要。
我在 MySQL 5.0.45 上运行 InnoDB 表
【问题讨论】:
标签: mysql innodb nested-queries