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

创建测试表:

   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;

效果如下:

时间: 2024-08-28 11:49:09

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

利用PHP实现登录与注册功能以及使用PHP读取mysql数据库——以表格形式显示数据

登录界面 <body><form action="login1.php" method="post"><div>用户名:<input type="text" name="uid" /></div><br /><div>密码:<input type="password" name="pwd" />

Mysql数据库上修改日期-->造数据

这次要给客户安装测试ineedle设备,但是安装后不会立刻有数据显示,不能够全面的展示给用户web界面的一些信息.此时需要有一个公网服务器能够展示一下ineedle统计数据,但是公司58设备上没有流量了,近期的数据没有更新了,所以准备将数据库中实际数据抽出几天的更改一下日期,使其展示ineedle的web界面上.最新的七天数据是2015.07.27--2015.08.02这7天的数据,正好一个星期.计划是将2015.07.27-2015.08.02修改为2015.10.19-2015.10.25

MySql 同一个列中的内容进行批量修改

问题重现: MySql 数据库中,一给列的内容中包括 ".wmv"     需要将 "." 后的wmv格式 换为"flv" 解决办法 update video_info set file_path=substring(file_path,1,length(file_path)-3); 先执行以上SQL进行删除: update video_info set file_path = concat(file_path,'flv'); 再执行这条语句把f

mysql update修改多条数据

通常情况下,我们会使用以下SQL语句来更新字段值: 复制代码代码如下: UPDATE mytable SET myfield='value' WHERE other_field='other_value'; 但是,如果你想更新多行数据,并且每行记录的各字段值都是各不一样,你会怎么办呢?举个例子,我的博客有三个分类目录(免费资源.教程指南.橱窗展示),这些分类目录的信息存储在数据库表categories中,并且设置了显示顺序字段 display_order,每个分类占一行记录.如果我想重新编排这些

mysql建立表及表的简单操作-插入数据-删除主键-删除表-修改表的数据-删除表的数据

-- 1.使用数据库 USE ren; -- 2.建立student表 CREATE TABLE student ( sid INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,   -- UNSIGNED(无符号) AUTO_INCREMENT(自增) sname VARCHAR(10),    -- 只能保存10个字符 saddress VARCHAR(15)   -- 只能保存15个字符 )ENGINE=MYISAM DEFAULT CHARSET=utf8;

使用MySQL命令行修改数据库密码

通过命令行,可以修改MySQL数据库的密码格式如下: mysqladmin -u用户名 -p旧密码 password 新密码 1.给root加个密码ab12.首先在DOS下进入目录mysql\bin,然后键入以下命令 mysqladmin -u root -password ab12 注:因为开始时root没有密码,所以-p旧密码一项就可以省略了. 2.再将root的密码改为djg345. mysqladmin -u root -p ab12 password djg345 (注意:和上面不同,

linux修改中文显示

修改中文显示 常用的字符集有: GBK      定长     双字节     不是国际标准,支持的系统不少 UTF-8   非定长    1-4字长    广泛支持,MYSQL也使用UTF-8 更改字符 [[email protected] ~]# vi /etc/sysconfig/i18n 添加 LANG="zh_CN.GB18030" SYSFONT="latarcyrheb-sun16 查询当前字符 [[email protected] ~]# echo $LANG

MySQL的字段长度和显示宽度

MySQL类型关键字后面的括号内指定整数值的显示宽度(例如,INT(11)).该可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度.显示宽度并不限制可以在列内保存的值的范围,也不限制超过列的指定宽度的值的显示. 所以INT(1)和INT(11)默认是没有任何区别的!!! 当结合可选扩展属性ZEROFILL使用时, 默认补充的空格用零代替.例如,对于声明为INT(5) ZEROFILL的列,值4检索为00004. 请注意如果在整数列保存超过显示宽度的一个值,当MySQL为复杂联接生成

MYSQL最大连接数修改

MYSQL数据库安装完成后,默认最大连接数是100,一般流量稍微大一点的论坛或网站这个连接数是远远不够的,增加默认MYSQL连接数的方法有两个 方法一:进入MYSQL安装目录 打开MYSQL配置文件 my.ini 或 my.cnf查找max_connections,如果有修改max_connections=1000, 如果没有在[mysqld]后面直接增加 服务里重起MYSQL即可(service mysql restart) 方法二:MySQL的最大连接数默认是100客户端登录:mysql -