我的查询有一点问题,这是我的表格:
CREATE TABLE IF NOT EXISTS `realizado` (
`cod` int(11) NOT NULL AUTO_INCREMENT,
`datedoc` date NOT NULL,
`bank` int(11) NOT NULL,
`bankValue` float NOT NULL,
PRIMARY KEY (`cod`));
INSERT INTO `realizado` (`cod`, `datedoc`, `bank`, `bankValue`) VALUES
(152, '2014-10-22', 22, 1000),
(153, '2014-10-22', 23, 2000),
(154, '2014-10-22', 24, 3000),
(200, '2014-10-23', 22, 950),
(201, '2014-10-25', 22, 100),
(202, '2014-10-25', 23, 2050),
(203, '2014-10-24', 22, 150),
(204, '2014-10-24', 24, 3800);
问题是:我需要从日期获取bankValue,并且仍然按银行分组,如下所示:
SELECT bank, bankValue
FROM realizado
WHERE datedoc <= '2014/10/25'
GROUP BY bank
我得到的最接近的是:
SELECT r.bank, (select bankValue from realizado r2 where max(r.cod) = r2.cod) as Value
FROM realizado as r
WHERE r.datedoc <= '2014/10/25'
GROUP BY r.bank
如果你喜欢的话,这是 SQL Fiddle -> http://sqlfiddle.com/#!2/83e309/2
我期望的结果是(22 - 100/23 - 2050/24 - 3800)
最佳答案
给你! (感谢您使用 DDL 和引导数据设置 sqlFiddle :)
工作 sqlFiddle: http://sqlfiddle.com/#!2/83e309/10
SELECT a.*
FROM realizado a
INNER JOIN
(
SELECT bank, MAX(datedoc) datedoc
FROM realizado
GROUP BY bank
) b ON a.bank = b.bank AND
a.datedoc = b.datedoc
关于mysql - 我该如何修复这个查询 - Mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26558541/