我有这样的表格数据
table name = tbl_fgm_career
+------+-------+------+
| name | value | year |
+------+-------+------+
| a1 | 12 | 1970 |
| a2 | 56 | 1970 |
| a1 | 65 | 1971 |
| b7 | 555 | 1971 |
| . | . | . |
| . | . | . |
| . | . | . |
| ab2 | 890 | 2019 |
+------+-------+------+
我写了这个过程来把年份值转换成列
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `pivot_question`()
BEGIN
SELECT
GROUP_CONCAT(
CONCAT("SUM(IF(year='", year, "',value ,0)) AS '", year, "'"), "\n"
) INTO @answers
FROM (
SELECT DISTINCT year FROM tbl_fgm_career
) A;
SET @query :=
CONCAT(
'SELECT name, ', @answers,
' FROM tbl_fgm_career GROUP BY name'
);
PREPARE statement FROM @query;
EXECUTE statement;
END$$
DELIMITER ;
我一共活了50年(1970-2019)。但是当我调用这个程序的时候,我只能等到1994年。如果我将order by year改为desc,那么我得到的列是(2019到1995)
如何解决这个问题。
1条答案
按热度按时间lymgl2op1#
组\u concat的最大默认大小为1024。这就是为什么我的专栏很少。
我曾经
SET SESSION group_concat_max_len = 1000000;
我的问题解决了。学分:@p.salmon