У меня есть этот вид таблицы:MySQL или PHP Преобразование строк в столбцы
месяц динамически генерироваться на основе пользовательского ввода. Месяц также можно повторить. Тем не менее, я хочу перенести значения месяца в столбцы со значением суммы, но при динамическом тестировании в mysql это не позволяет мне, потому что он может возвращать только определенные значения.
Я также попытался удалить отличный от моего кода ниже, но он не работает. Есть предположения?
CREATE DEFINER=`root`@`localhost` PROCEDURE `test`()
BEGIN
SET group_concat_max_len=2048;
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'MAX(IF(month = ''',
month,
''', amount, NULL)) AS ',
month
)
) INTO @sql
FROM tmp_results;
SET @sql = CONCAT('SELECT r.account,
r.region, ',
@sql, '
FROM tmp_results r
LEFT JOIN accounts AS a
on r.account_id = a.id
GROUP BY r.account');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END
Пытались использовать коллекцию в Laravel 5 и до сих пор ничего не делает, если у вас есть ответ на PHP, я приветствую его также. Я несколько дней стучаю головой, чтобы решить эту проблему.
«Не работает» не очень конкретно: что не работает или какая ошибка вы получаете? В зависимости от конфигурации вашего сервера (например, конфигурации по умолчанию 5.7) вам может потребоваться изменить параметр 'r.region' на' max (r.region) как регион 'в' select' или использовать 'GROUP BY r.account, r. region ', но в противном случае код с первого взгляда выглядит корректно (кроме того, если не проверять, является ли 'tmp_results' или, скорее,' @ sql' пустым, это приведет к ошибке в этом случае, но это не похоже проблема здесь, и это не сработает, если у вас есть недопустимые значения для 'month', например' '' 'или содержащие пробелы,' -', ...). – Solarflare
не работает, он не возвращает результат, который я хотел. Он пропустил другие месяцы, которые мне нужно было отобразить. – Dhenn
Он работает, просто не вернул результат, который я ожидал – Dhenn