SQL Отчет по затраченному времени с разбивкой по дням
Возможно ли вообще такое реализовать?
Имеются 4 таблицы в БД MySQL
| Users | Elapsed_time | Tasks | Grops |
|---|---|---|---|
| id | id | id | id |
| Name | date | title | title |
| user_id | grop_id | ||
| task_id | |||
| minutes |
в конце хочется получить отчет в виде таблицы с разбивкой по дням
| GROUPS | USERS | TASKS | 01 jan | 02 jan | 03 jan | 01 feb | 02 feb | 03 feb |
|---|---|---|---|---|---|---|---|---|
| group 1 | user 1 | task 1 | 10 | 20 | 30 | 10 | ||
| group 1 | user 1 | task 22 | 40 | 50 | 10 | |||
| group 1 | user 22 | task 1 | 20 | 20 | ||||
| group 1 | user 22 | task 333 | 30 | 30 | ||||
| group 1 | user 333 | task 22 | 40 | |||||
| group 2 | user 333 | task 333 | 20 | 20 | 10 | |||
| group 2 | user 333 | task 4444 | 30 | 30 | ||||
| group 2 | user 4444 | task 1 | 40 | |||||
| group 2 | user 4444 | task 333 | 20 | 20 | ||||
| group 2 | user 55555 | task 22 | 30 | 30 | ||||
| group 2 | user 55555 | task 4444 | 40 | |||||
| group 2 | user 55555 | task 55555 | 10 | 10 | 10 | 10 | 10 | 10 |
На данный момент смог построить такой запрос
SELECT
b_tasks_elapsed_time.ID,
b_user.NAME,
b_tasks.TITLE,
EXTRACT(YEAR FROM b_tasks_elapsed_time.CREATED_DATE) AS year,
EXTRACT(MONTH FROM b_tasks_elapsed_time.CREATED_DATE) AS month,
ROUND(NULLIF(SUM(CASE WHEN EXTRACT(DAY FROM b_tasks_elapsed_time.CREATED_DATE) = 1 THEN b_tasks_elapsed_time.MINUTES ELSE 0 END)/60, 0), 2) AS day_01,
ROUND(NULLIF(SUM(CASE WHEN EXTRACT(DAY FROM b_tasks_elapsed_time.CREATED_DATE) = 2 THEN b_tasks_elapsed_time.MINUTES ELSE 0 END)/60, 0), 2) AS day_02,
...
ROUND(NULLIF(SUM(CASE WHEN EXTRACT(DAY FROM b_tasks_elapsed_time.CREATED_DATE) = 30 THEN b_tasks_elapsed_time.MINUTES ELSE 0 END)/60, 0), 2) AS day_30,
ROUND(NULLIF(SUM(CASE WHEN EXTRACT(DAY FROM b_tasks_elapsed_time.CREATED_DATE) = 31 THEN b_tasks_elapsed_time.MINUTES ELSE 0 END)/60, 0), 2) AS day_31
FROM b_tasks_elapsed_time
INNER JOIN b_user ON b_tasks_elapsed_time.USER_ID = b_user.ID
INNER JOIN b_tasks ON b_tasks_elapsed_time.TASK_ID = b_tasks.ID
WHERE EXTRACT(YEAR FROM b_tasks_elapsed_time.CREATED_DATE) = 2023 AND EXTRACT(MONTH FROM b_tasks_elapsed_time.CREATED_DATE) = 11 AND b_user.ID LIKE '251'
GROUP BY b_tasks_elapsed_time.ID
Может поможете sql-запросом, ссылка или путь в каком направлении двигаться, что бы решить задачу. Любая помощь приветствуется.