参考:http://www.cnblogs.com/h07061108/p/mysql_questions.html#3806338

实现如下效果

CREATE TABLE IF NOT EXISTS tb_amount(
`Id` INT NOT NULL AUTO_INCREMENT,
`Year` CHAR(4),
`Month` CHAR(2),
`Amount` DECIMAL(5,2),
PRIMARY KEY(`Id`)
); INSERT INTO `tb_amount`(`Year`, `Month`, `Amount`) VALUES('', '', '1.1');
INSERT INTO `tb_amount`(`Year`, `Month`, `Amount`) VALUES('', '', '1.2');
INSERT INTO `tb_amount`(`Year`, `Month`, `Amount`) VALUES('', '', '1.3');
INSERT INTO `tb_amount`(`Year`, `Month`, `Amount`) VALUES('', '', '1.4');
INSERT INTO `tb_amount`(`Year`, `Month`, `Amount`) VALUES('', '', '2.1');
INSERT INTO `tb_amount`(`Year`, `Month`, `Amount`) VALUES('', '', '2.2');
INSERT INTO `tb_amount`(`Year`, `Month`, `Amount`) VALUES('', '', '2.3');
INSERT INTO `tb_amount`(`Year`, `Month`, `Amount`) VALUES('', '', '2.4'); SELECT `Year`,
(SELECT Amount FROM tb_amount m WHERE `Month`=1 AND m.`Year`=tb_amount.`Year`) AS m1,
(SELECT Amount FROM tb_amount m WHERE `Month`=2 AND m.`Year`=tb_amount.`Year`) AS m2,
(SELECT Amount FROM tb_amount m WHERE `Month`=3 AND m.`Year`=tb_amount.`Year`) AS m3,
(SELECT Amount FROM tb_amount m WHERE `Month`=4 AND m.`Year`=tb_amount.`Year`) AS m4
FROM tb_amount GROUP BY `Year`; 或者
select year,
max(case month when 1 then amount else 0 end ) m1,
max(case month when 2 then amount else 0 end) m2,
max(case month when 3 then amount else 0 end) m3,
max(case month when 4 then amount else 0 end) m4
from tb_amount
group by year;

【mysql经典题目】行转列的更多相关文章

  1. mysql 中实现行变列

    前言: mysql行列变化,最难的就是将多个列变成多行,使用的比较多的是统计学中行变列,列变行,没有找到现成的函数或者语句,所以自己写了存储过程,使用动态sql来实现,应用业务场景,用户每个月都有使用 ...

  2. MySQL、DM 行转列及字段去重(Group_Concat())

    最近在使用数据库迁移适配,由MySQL 库迁移到达梦数据库,其中进行行转列时,MySQL转换达梦sql语法有些问题,特记录. 在MySQL 下有Group_Concat(expr)  ,在达梦及神通数 ...

  3. mysql 经典题目

    题目1:实现如下效果 CREATE TABLE IF NOT EXISTS tb_amount( `Id` INT NOT NULL AUTO_INCREMENT, `), `), `Amount` ...

  4. mysql中的行转列

    //查看当前商品库存 function checkProductStock($product_id){ global $wpdb; $sql="SELECT post_id,max(if(( ...

  5. 【mysql经典题目】科目成绩都大于80分\每个科目的第一名\总成绩排名

    参考:http://blog.csdn.net/lifushan123/article/details/44948135 1.查询出科目成绩都大于80分的学生的名字? drop table if EX ...

  6. 【转】MySQL存储过程中使用动态行转列

    MySQL存储过程中使用动态行转列 最近做项目关于数据报表处理,然而数据库存储格式和报表展现形式不同,需要进行一下行转列的操作,在做上一个项目的时候也看了一下,但是后来换了读取方式,也就没深入研究这个 ...

  7. MySQL存储过程的动态行转列

    MySQL存储过程中使用动态行转列 最近做项目关于数据报表处理,然而数据库存储格式和报表展现形式不同,需要进行一下行转列的操作,在做上一个项目的时候也看了一下,但是后来换了读取方式,也就没深入研究这个 ...

  8. MYSQL开发技巧之行转列和列转行

    行转列--两种方法第一种方法:行转列我们通常是使用交叉连接和子查询的方式做到,比如下面的例子,查询每个name的对应id的和mysql> select * from user; +----+-- ...

  9. MYSQL 行转列 以及基本的聚合函数count,与group by 以及distinct组合使用

    在统计查询中,经常会用到count函数,这里是基础的 MYSQL 行转列 以及基本的聚合函数count,与group by 以及distinct组合使用 -- 创建表 CREATE TABLE `tb ...

随机推荐

  1. php redis中文手册

    phpredis是php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系 很有用;以下是redis官方提供的命令使用技巧: 下载地址如下: https://github.com/ow ...

  2. Kali-linux服务的指纹识别

    为了确保有一个成功的渗透测试,必须需要知道目标系统中服务的指纹信息.服务指纹信息包括服务端口.服务名和版本等.在Kali中,可以使用Nmap和Amap工具识别指纹信息.本节将介绍使用Nmap和Amap ...

  3. ascll方便查询

  4. Jpa条件查询组合查询and 和 or同时用

    条件查询,各个条件之间是and并且&&关系,其中地理信息省市区县,例如河北省,要包括其下属所有城市,每个城市包括下属区县,只选择河北省时候,要查询的是河北省所有的,他们之间是or 或者 ...

  5. windows下搭建nginx+php开发环境

    windows下搭建nginx+php开发环境 1.前言 windows下大多我们都是下载使用集成环境,但是本地已经存在一个集成环境,但不适合项目的需求.因此准备再自己搭建一个环境. 2.准备 工具: ...

  6. 【luogu P1606 [USACO07FEB]荷叶塘Lilypad Pond】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1606 这个题..第一问很好想,但是第二问,如果要跑最短路计数的话,零边权的花怎么办? 不如这样想,如果这个点 ...

  7. Dynamic Rankings—带单点修改的主席树

    这道题应该是很不错的板子了\(\mathcal{\color{cyan}{Link}}\) \(\mathcal{\color{red}{Description}}\) 给定一个序列,有两种操作.一是 ...

  8. ES6读书笔记(一)

    前言 前段时间整理了ES5的读书笔记:<你可能遗漏的JS知识点(一)>.<你可能遗漏的JS知识点(二)>,现在轮到ES6了,总共分为四篇,以便于知识点的梳理和查看,本篇内容包括 ...

  9. 浅谈ES6基础——Promise

    IMAGE加载 Callback Hell function loadImg(src,callback,fail) { var img = document.createElement('img'); ...

  10. 1010 一元多项式求导(用while接收输入)

    题目: 知识点for me: 该题的输入并非是按回车后数据输入完毕也不是给定数据长度,而是输入到文件末尾.可以有以下三种写法: (1)while(cin>>a)  (2)while(sca ...