Как конвертировать строки в столбцы в Mysqli Query

0

Я хочу преобразовать данные месяца в столбцы

This Query Получение следующего результата

Изображение 174551

SELECT CONCAT(MONTHNAME(C.'ClientServiceDate'),'-',YEAR(C.'ClientServiceDate')) AS 'Month',ME.'MethodName',
       COUNT(C.'ContraceptiveMethod') AS 'TotalUser',
       MONTH(C.ClientServiceDate) AS 'Month'
FROM mwra AS M
JOIN client_information AS C ON (C.MwraId = M.MwraId)
LEFT JOIN methods AS ME ON (ME.MethodId = C.ContraceptiveMethod)
WHERE C.FpUserStatus = 'New'
GROUP BY ME.MethodId,MONTH(C.ClientServiceDate)
  • 0
    каков ваш ожидаемый результат?
  • 0
    Вы, вероятно, ищете сводные таблицы, используя MySQL. Здесь уже много ансеров
Показать ещё 3 комментария
Теги:

1 ответ

0

Я сделал нечто подобное некоторое время назад.

Вы можете попробовать с подготовленным выражением. Получить названия месяцев

SET @headers = (
SELECT
    GROUP_CONCAT( DISTINCT
        CONCAT(
            'SUM( IF(MONTH(C.'ClientServiceDate') = ', 
             MONTHNAME(C.'ClientServiceDate'), 
            'C.ContraceptiveMethod,0) ) AS '
            , MONTHNAME(C.'ClientServiceDate')
            )
            ORDER BY C.'ClientServiceDate'
    )
FROM client_information  as C
);

А затем используйте эти заголовки для подготовленного утверждения:

SET @sql = CONCAT('SELECT ', @headers, 'REMAINING QUERY');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
  • 0
    Ваш запрос хорош, но он получал повторяющиеся имена столбцов, как декабрь_2018, декабрь_2018, январь_2019. Спасибо
  • 0
    Только что отредактировал запрос @header, он сравнивал MONTH с MONTHNAME.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню