大家好我需要帮助我的图表。
我有两张桌子“我会得到的钱”和“我付的钱” 3字段(id,money,date)
我的两个查询来获取我的图表的数组是:
SELECT date_format(einnahmen.created_at, '%m') as pDate1, date_format(einnahmen.created_at, '%Y') as pDate2, date_format(einnahmen.created_at, '%m-%Y') as pDate3, sum(einnahmen.einnahmen) as pAmount FROM einnahmen GROUP BY pDate3 ORDER BY pDate2 ASC, pDate1 ASC
SELECT date_format(ausgaben.created_at, '%m') as pDate1, date_format(ausgaben.created_at, '%Y') as pDate2, date_format(ausgaben.created_at, '%m-%Y') as pDate3, sum(ausgaben.ausgaben) as pAmount FROM ausgaben GROUP BY pDate3 ORDER BY pDate2 ASC, pDate1 ASC
现在我坚持将这两个结合起来,结果应该是第1个 - 第2个但是采用相同的格式,按月和年分组并总结月份
编辑(添加表格结构和数据)
DROP TABLE IF EXISTS `ausgaben`;
CREATE TABLE `ausgaben` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ausgaben` int(255) NOT NULL,
`created_at` date NOT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 21 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Fixed;
INSERT INTO `ausgaben` VALUES (1, 1149, '2017-05-01');
INSERT INTO `ausgaben` VALUES (2, 3116, '2017-06-01');
INSERT INTO `ausgaben` VALUES (3, 4493, '2017-07-01');
INSERT INTO `ausgaben` VALUES (4, 6438, '2017-08-01');
INSERT INTO `ausgaben` VALUES (5, 2830, '2017-09-01');
INSERT INTO `ausgaben` VALUES (6, 0, '2017-10-01');
INSERT INTO `ausgaben` VALUES (7, 0, '2017-11-01');
INSERT INTO `ausgaben` VALUES (8, 0, '2017-12-01');
INSERT INTO `ausgaben` VALUES (9, 0, '2018-01-01');
INSERT INTO `ausgaben` VALUES (10, 0, '2018-02-01');
INSERT INTO `ausgaben` VALUES (11, 0, '2018-03-01');
INSERT INTO `ausgaben` VALUES (12, 0, '2018-04-01');
INSERT INTO `ausgaben` VALUES (13, 0, '2018-05-01');
INSERT INTO `ausgaben` VALUES (14, 0, '2018-06-01');
INSERT INTO `ausgaben` VALUES (15, 0, '2018-07-01');
INSERT INTO `ausgaben` VALUES (16, 0, '2018-08-01');
INSERT INTO `ausgaben` VALUES (17, 0, '2018-09-01');
INSERT INTO `ausgaben` VALUES (18, 0, '2018-10-01');
INSERT INTO `ausgaben` VALUES (19, 0, '2018-11-01');
INSERT INTO `ausgaben` VALUES (20, 0, '2018-12-01');
和表2
DROP TABLE IF EXISTS `einnahmen`;
CREATE TABLE `einnahmen` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`einnahmen` int(255) NOT NULL,
`created_at` date NOT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 23 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Fixed;
INSERT INTO `einnahmen` VALUES (1, 0, '2017-05-01');
INSERT INTO `einnahmen` VALUES (2, 2850, '2017-06-01');
INSERT INTO `einnahmen` VALUES (3, 650, '2017-07-01');
INSERT INTO `einnahmen` VALUES (4, 0, '2017-08-01');
INSERT INTO `einnahmen` VALUES (5, 166, '2017-09-01');
INSERT INTO `einnahmen` VALUES (6, 990, '2017-10-01');
INSERT INTO `einnahmen` VALUES (7, 0, '2017-11-01');
INSERT INTO `einnahmen` VALUES (8, 0, '2017-12-01');
INSERT INTO `einnahmen` VALUES (9, 0, '2018-01-01');
INSERT INTO `einnahmen` VALUES (10, 0, '2018-02-01');
INSERT INTO `einnahmen` VALUES (11, 0, '2018-03-01');
INSERT INTO `einnahmen` VALUES (12, 0, '2018-04-01');
INSERT INTO `einnahmen` VALUES (13, 0, '2018-05-01');
INSERT INTO `einnahmen` VALUES (14, 6, '2018-06-01');
INSERT INTO `einnahmen` VALUES (15, 0, '2018-07-01');
INSERT INTO `einnahmen` VALUES (16, 0, '2018-08-01');
INSERT INTO `einnahmen` VALUES (17, 0, '2018-09-01');
INSERT INTO `einnahmen` VALUES (18, 4, '2018-10-01');
INSERT INTO `einnahmen` VALUES (19, 2, '2018-11-01');
INSERT INTO `einnahmen` VALUES (20, 1, '2018-12-01');
INSERT INTO `einnahmen` VALUES (21, 3000, '2017-10-02');
提前谢谢
答案 0 :(得分:0)
您可以尝试此查询:
SELECT p.pDate1,p.pDate2,sum(p.pAmount)
FROM
((SELECT date_format(einnahmen.created_at, '%m') as pDate1,
date_format(einnahmen.created_at, '%Y') as pDate2,
date_format(einnahmen.created_at, '%m-%Y') as pDate3,
sum(einnahmen.einnahmen) as pAmount
FROM einnahmen GROUP BY pDate3 )
UNION ALL
(SELECT date_format(ausgaben.created_at, '%m') as pDate1,
date_format(ausgaben.created_at, '%Y') as pDate2,
date_format(ausgaben.created_at, '%m-%Y') as pDate3,
sum(-ausgaben.ausgaben) as pAmount
FROM ausgaben GROUP BY pDate3)) p
GROUP BY p.pDate2,p.pDate1
ORDER BY p.pDate2 ASC, p.pDate1 ASC;
答案 1 :(得分:-1)
select * from
(SELECT
einnahmen.created_at,
date_format(einnahmen.created_at, '%m') as GETpDate1,
date_format(einnahmen.created_at, '%Y') as GETpDate2,
date_format(einnahmen.created_at, '%m-%Y') as GETpDate3,
sum(einnahmen.einnahmen)
over (partition by date_format(einnahmen.created_at, '%m-%Y')
order by date_format(einnahmen.created_at, '%Y'),
date_format(einnahmen.created_at, '%m')) as GETpAmount
FROM einnahmen) as e
JOIN
(SELECT
ausgaben.created_at,
date_format(ausgaben.created_at, '%m') as PAYpDate1,
date_format(ausgaben.created_at, '%Y') as PAYpDate2,
date_format(ausgaben.created_at, '%m-%Y') as PAYpDate3,
sum(ausgaben.ausgaben)
over (partition by date_format(ausgaben.created_at, '%m-%Y')
order by date_format(ausgaben.created_at, '%Y'),
date_format(ausgaben.created_at, '%m')) as PAYpAmount
FROM ausgaben) as a
on a.ausgaben.created_at = e.einnahmen.created_at
是否有点像你在寻找
答案 2 :(得分:-1)
select pdate1,pdate2,pdate3,pamount
from(
SELECT date_format(einnahmen.created_at, '%m') as pDate1, date_format(einnahmen.created_at, '%Y') as pDate2, date_format(einnahmen.created_at, '%m-%Y') as pDate3, sum(einnahmen.einnahmen) as pAmount
FROM einnahmen GROUP BY pDate3 ORDER BY pDate2 ASC, pDate1 ASC) x
union all
select pdate1,pdate2,pdate3,pamount
from(
SELECT date_format(ausgaben.created_at, '%m') as pDate1,
date_format(ausgaben.created_at, '%Y') as pDate2,
date_format(ausgaben.created_at, '%m-%Y') as pDate3, sum(ausgaben.ausgaben) as pAmount
FROM ausgaben
GROUP BY pDate3
ORDER BY pDate2 ASC, pDate1 ASC)y