Я пытаюсь выполнить подсчет id и 1 внутри group_concat. Ниже мой запрос.
MYSQL:
SELECT
months.name AS NAME,
CONCAT(
'[',
GROUP_CONCAT(
CONCAT(
'[\"',
COUNT(p_c_n_details.JPN_ID),
'\",',
1,
']'
)
),
']'
) AS DATA
FROM
p_c_n_details
INNER JOIN in_e_s_s__p_c_ns RIGHT OUTER JOIN months ON months.id =
MONTH(p_c_n_details.created_at) AND p_c_n_details.type IN('Process Change',
'Design Change') AND p_c_n_details.JPN_ID =
in_e_s_s__p_c_ns.juniperinternalpcnid AND p_c_n_details.created_at >=
last_day(NOW()) + INTERVAL 1 DAY - INTERVAL 3 MONTH
WHERE
months.name IN(
MONTHNAME(
DATE_SUB(CURDATE(), INTERVAL 0 MONTH)),
MONTHNAME(
DATE_SUB(CURDATE(), INTERVAL 1 MONTH)),
MONTHNAME(
DATE_SUB(CURDATE(), INTERVAL 2 MONTH))
)
GROUP BY
months.id
Ожидаемый результат:
Name | DATA
-------------------------
July [20,1]
August [33,1]
Table months contains month names.
Но я получаю сообщение об ошибке #1111 - Invalid use of group function.
Я пробовал эту ссылку mysql group_concat со счетом внутри? но я сталкиваюсь с ошибкой при использовании в моем запросе.
Это предположение.
Пытаться:
SELECT months.name AS NAME,
CONCAT('{',COUNT(p_c_n_details.JPN_ID),',1}' AS DATA
вместо SELECT, который у вас есть.
Результат вашего примера не показывает необходимость в GROUP_CONCAT()
.
GROUP_CONCAT()
иCOUNT()
являются агрегатными функциями. Вы не можете вкладывать одно в другое. Если вы продемонстрировали нам пример ввода и желаемый результат, мы могли бы помочь вам понять, как структурировать ваш запрос.