Транспонировать строки в столбцы в SQL / PHP - PullRequest
2 голосов
/ 21 мая 2019

Я получил следующие данные:

MONTH      |      TOTAL
-------------------------
Jan        |      100
Feb        |      200
Mar        |      300

Используя этот запрос:

$query = "SELECT DATE_FORMAT(date,'%b') AS MONTH, SUM(col1+col2) AS TOTAL FROM myTable GROUP BY YEAR(date),MONTH(date)";

Как мне отредактировать вышеуказанный запрос или переписать, чтобы получить следующий результат:

JAN | FEB | MAR
-------------------------
100 | 200 | 300

Я прошел почти все другие подобные посты. Тем не менее, sql транспонирование, для меня, очень запутанно. Любой вклад очень ценится!

1 Ответ

2 голосов
/ 21 мая 2019

Вы можете использовать условное агрегирование. Следующее будет работать в SQL Server или MySQL:

select year(date),
       sum(case when month(date) = 1 then col1 + col2 else 0 end) as jan,
       sum(case when month(date) = 2 then col1 + col2 else 0 end) as feb,
       sum(case when month(date) = 3 then col1 + col2 else 0 end) as mar
from mytable
group by year(date)
order by year(date); 

РЕДАКТИРОВАТЬ (относительно комментария):

select year(date),
       sum(case when month(date) = 1 then val else 0 end) as jan,
       sum(case when month(date) = 2 then val else 0 end) as feb,
       sum(case when month(date) = 3 then val else 0 end) as mar
from (select t.*, (col1 + col2) as val
      from mytable
     ) t
group by year(date)
order by year(date); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...