Вернуть все строки, сгруппированные по году и месяцу с даты SQL

У меня есть таблица prestations, и я хочу сгруппировать все prestations по году-месяцу из созданного столбца (дата).

Я пробовал группировать по ГОД() и МЕСЯЦ(), но он возвращает только 1 строку. Например, я хочу:

2019-01:

престанция 1

престанция 2 ...

2019-02:

престанция 1

...

Данные базы данныхСтруктура базы данных

Как я могу сделать это в SQL или в доктрине? Спасибо

Не могли бы вы привести пример своей таблицы, я хотел бы увидеть, в каком формате ваши даты. И да, вы можете сделать это в SQL, но, возможно, вам следует проанализировать даты.

Aureliano Guedes 13.02.2019 14:21

спасибо за ваш ответ, я добавил скрин в свой пост.

Quentles 13.02.2019 14:31
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
2
44
1

Ответы 1

Вы можете получить значения года и месяца из поля даты, затем соединить их с помощью CONCAT, чтобы создать поле год-месяц, а затем сгруппировать его. Что-то вроде этого.

select CONCAT(year(mydate), '-', month(mydate)) as dateresult from test group by dateresult;

Это MySQL, не уверен, что вы используете, и вам нужно будет ввести свои собственные имена таблиц и полей.

Спасибо за ваш ответ. Я пытался, но у меня есть 1 строка с разным CONCAT (год-месяц). Как получить все мои престанции из ГГГГ-ММ?

Quentles 13.02.2019 16:04

Извините, не уверен, что именно вы спрашиваете здесь. Можете ли вы опубликовать некоторые данные из вашей таблицы, чтобы я мог видеть, как она структурирована?

Dugggie 13.02.2019 16:15

Я добавил 2 экрана на свой вопрос. Мои данные и моя структура. Спасибо за помощь

Quentles 13.02.2019 16:20

ОК, возможно, это поможет, попробуйте запустить это для своей таблицы select CONCAT(year(created), '-', month(created)) as dateresult, label from test group by dateresult, label; Если вы измените свои данные, чтобы они имели другие значения (например, если у вас есть test1, test2, test3 и т. д. в поле метки, результирующие данные будут выглядеть немного более значимыми.

Dugggie 13.02.2019 16:30

Спасибо, я добавил $prestations = []; foreach ($results as $result){ $prestations[$result['dateresult']][] = $result; } и получил свой массив, как и хотел, спасибо!

Quentles 13.02.2019 16:57

Другие вопросы по теме