Mysql SQL 2表一个日期组和总和
嗨,伙计,我需要一些帮助来制作我的图表 我有两张桌子“我会得到的钱”和“我付的钱” 3个字段(id、货币、日期) 获取图表数组的两个查询是:Mysql SQL 2表一个日期组和总和,mysql,sql,Mysql,Sql,嗨,伙计,我需要一些帮助来制作我的图表 我有两张桌子“我会得到的钱”和“我付的钱” 3个字段(id、货币、日期) 获取图表数组的两个查询是: 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.ei
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,但格式相同,按月份和年份分组,并将月份相加
编辑(添加表结构和数据)
和表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');
提前感谢您可以尝试以下查询:
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;
是不是像你要找的那样编辑你的问题并显示示例数据和期望的结果。Thx但我收到消息“1248-每个派生表都必须有自己的别名”这意味着什么:)现在试试,我忘记了别名完美但我忘了一些东西,我不需要每个月的总和()。我需要每个月的“Einnahman”-“ausgaben”^^^好的,如果你把一个-in加起来(-ausgaben.ausgaben),你会得到一个负值,所以你会得到“Einnahman”-“ausgaben”。我已经修改了查询
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
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
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