MySQL - 动态地将一行转换为列

时间:2016-09-30 16:36:44

标签: php mysql laravel laravel-5.2

你好假设有一个临时表,结果集如下:

enter image description here

月份列根据用户输入动态变化。现在我希望我的月份列值(月)成为列,在它下面是数量,所有内容都将按account_id分组。

我已经搜索了每个答案,但我仍然无法得到它。这是我的代码,但它没有准确返回,我仍然迷失在这里:

CREATE DEFINER=`root`@`localhost` PROCEDURE `test`()
BEGIN
SET group_concat_max_len=2048;
SELECT CONCAT('
         SELECT account_id, month ',
       GROUP_CONCAT('
                  GROUP_CONCAT(IF(amount=',QUOTE(amount),',value,NULL))
                    AS `',REPLACE(amount,'`','``'),'`'
       ), '
         FROM     tmp_results
         GROUP BY account_id
       ')
INTO @sql
FROM (
  SELECT  account_id, month FROM tmp_results
) t;

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END

有人可以一步一步地帮助我,我能理解吗? PHP laravel一步一步也欢迎。我是新手开发者。谢谢!

0 个答案:

没有答案