Cytat(trueblue @ 31.08.2019, 23:32:02 )

ORDER BY nie jest potrzebne.
To szczegół ale ok dzięki
Próbowałem na innej tabeli zrobić również raport. Z założenia miał dodać i pogrupować koszty miesiącami. Ale niestety poległem. Jestem chociaż blisko rozwiązania?
DESCRIBE costs;
+----------------+-------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+-------------+------+-----+-------------------+----------------+
| ID | int(11) | NO | PRI | NULL | auto_increment |
| category_id | smallint(6) | NO | | NULL | |
| entry_owner_id | smallint(6) | NO | | NULL | |
| value | smallint(6) | NO | | NULL | |
| description | text | YES | | NULL | |
| cost_date | date | NO | | NULL | |
| date_added | timestamp | NO | | CURRENT_TIMESTAMP | |
+----------------+-------------+------+-----+-------------------+----------------+
DESCRIBE cost_categories;
+------------+-------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+-------------------+----------------+
| ID | int(11) | NO | PRI | NULL | auto_increment |
| owner_id | smallint(6) | NO | | NULL | |
| category | tinytext | NO | | NULL | |
| date_added | timestamp | NO | | CURRENT_TIMESTAMP | |
+------------+-------------+------+-----+-------------------+----------------+
SELECT * FROM costs;
+----+-------------+----------------+-------+-------------------------------------------------+------------+---------------------+
| ID | category_id | entry_owner_id | value | description | cost_date | date_added |
+----+-------------+----------------+-------+-------------------------------------------------+------------+---------------------+
| 1 | 1 | 2 | 204 | | 2019-08-31 | 2019-08-31 18:50:26 |
| 2 | 2 | 2 | 50 | domestos, zmywaki, płyn do mycia naczyń, mopy | 2019-07-30 | 2019-08-31 18:52:08 |
| 3 | 3 | 2 | 400 | Naprawa dzrzwi | 2019-08-22 | 2019-08-31 23:44:08 |
| 4 | 3 | 2 | 50 | Naprawa łóżka | 2019-08-22 | 2019-08-31 23:44:17 |
| 5 | 4 | 2 | 200 | Płytki | 2019-08-22 | 2019-08-31 23:44:46 |
| 6 | 1 | 2 | 400 | coś | 2019-07-31 | 2019-08-31 18:50:26 |
| 7 | 1 | 2 | 300 | coś | 2019-07-31 | 2019-08-31 18:50:26 |
| 8 | 4 | 2 | 400 | cosss | 2019-08-22 | 2019-08-31 23:44:46 |
+----+-------------+----------------+-------+-------------------------------------------------+------------+---------------------+
SELECT YEAR(tmp.dzien) AS rok,MONTH(tmp.dzien) AS miesiac, tmp.value, SUM(tmp.value) AS sum_value FROM (
SELECT r.value,k.dzien, `entry_owner_id` FROM costs AS r
CROSS JOIN(
SELECT DATE_ADD('2013-01-01',INTERVAL a.a + 10 * b.a + 100*c.a + 1000*d.a DAY) AS dzien FROM
(SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS a
CROSS JOIN
(SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS b
CROSS JOIN
(SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS c
CROSS JOIN
(SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS d
) AS k ON r.cost_date AND `entry_owner_id`=2 AND r.value >0
ORDER BY k.dzien, r.value
) AS tmp
GROUP BY DATE_FORMAT(tmp.dzien,'%Y-%m')