如何把mysql的列修改成行显示数据简单实现

Posted HRuinger

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何把mysql的列修改成行显示数据简单实现相关的知识,希望对你有一定的参考价值。

如何把mysql的列修改成行显示数据简单实现

 

image

创建测试表:

   1: DROP TABLE IF EXISTS `test`;
   2: CREATE TABLE `test` (
   3:   `year` int(11) DEFAULT NULL,
   4:   `month` int(11) DEFAULT NULL,
   5:   `amount` double DEFAULT NULL
   6: ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

插入数据:

   1: INSERT INTO `test` VALUES (\'1991\', \'1\', \'1.1\');
   2: INSERT INTO `test` VALUES (\'1991\', \'2\', \'1.2\');
   3: INSERT INTO `test` VALUES (\'1991\', \'3\', \'1.3\');
   4: INSERT INTO `test` VALUES (\'1991\', \'4\', \'1.4\');
   5: INSERT INTO `test` VALUES (\'1992\', \'1\', \'2.1\');
   6: INSERT INTO `test` VALUES (\'1992\', \'2\', \'2.2\');
   7: INSERT INTO `test` VALUES (\'1992\', \'3\', \'2.3\');
   8: INSERT INTO `test` VALUES (\'1992\', \'4\', \'2.3\');

 

看到题目要求,仔细想想可以:

利用SUM(IF()) 生成列 + WITH ROLLUP 生成汇总行,并利用 IFNULL将汇总行标题显示为 Total_num

实现
SQL代码块如下:

   1: select year,
   2:     sum(if(month=1,amount,0)) as "M1",
   3:     sum(if(month=2,amount,0)) as "M2",
   4:     sum(if(month=3,amount,0)) as "M3",
   5:     sum(if(month=4,amount,0)) as "M4"
   6: from test
   7: GROUP by year;

效果如下:

image

以上是关于如何把mysql的列修改成行显示数据简单实现的主要内容,如果未能解决你的问题,请参考以下文章

如何把sqlserver中的列转换成行,行转换成列,显示

c#如何把Json转成DataTable每一行都一一对应下面多出来的列自动添加到后方

SQL 如何把一列的值转换成一行显示

SQL把查询出的一个列转换成行

SQL表列数据转成行数据

DB2如何把列 修改为 "可空"?