Сводная таблица MySQL из базы данных mysql - PullRequest
0 голосов
/ 31 марта 2020

Я хотел бы создать сводную таблицу, которая выглядит как рисунок ниже из таблицы mysql:

Year                        | 2018  | 2018 |   2018 |  2019   ....
---------------------------------------------------------------
Month                       |  Jan  |  Feb |   Mar  |  Apr   ....
----------------------------------------------------------------
Dolutegravir (DTG) 50mg Tabs| 10000 | 20000|   xx   |  xx    ....
-----------------------------------------------------------------
 xxxxxxxx                   |   xx  |  xx  | xxx    |  xx  .......
-------------------------------------------------------------------

MySql Схема и данные можно найти здесь http://sqlfiddle.com/#! 9/678546/2

Ваша помощь оценена заранее

1 Ответ

1 голос
/ 31 марта 2020

Вот частичный пример , основанный на этом вопросе . Формат basi c предназначен для каждого столбца, который вы хотите в конце, вам нужно определить еще один SUM(CASE(x)). Этот пример в настоящее время выводит только 4 месяца, но вы можете включить его в число тех месяцев, которые вам нужны.

http://sqlfiddle.com/#! 9/678546/9 для рабочего примера.

SELECT  P.`drug`,
    SUM(
        CASE 
            WHEN P.`data_month`='Jan' AND P.`data_year` = 2018
            THEN P.`dispensed_packs`
            ELSE 0 
        END
    ) AS '2018-01',
    SUM(
        CASE 
            WHEN P.`data_month`='Feb' AND P.`data_year` = 2018
            THEN P.`dispensed_packs`
            ELSE 0 
        END
    ) AS '2018-02',
    SUM(
        CASE 
            WHEN P.`data_month`='Mar' AND P.`data_year` = 2018
            THEN P.`dispensed_packs`
            ELSE 0 
        END
    ) AS '2018-03',
    SUM(
        CASE 
            WHEN P.`data_month`='Apr' AND P.`data_year` = 2018
            THEN P.`dispensed_packs`
            ELSE 0 
        END
    ) AS '2019-01'
FROM    tmp_pivot_dtg P
GROUP BY P.`drug`;
...