最近在做一个统计功能,其中有根据一张表中的一个字段的不同状态统计,输出时将同一笔业务的多个数据集合成一条数据进行展示。
数据库是MYSQL,直接上代码,实例如下:
建表语句:
CREATE TABLE `TB_TABLE` ( `ID` char(32) NOT NULL COMMENT '主键', `BIZ_NUM` varchar(30) DEFAULT NULL COMMENT '业务编号', `BIZ_AMT` int(11) DEFAULT NULL COMMENT '金额', `TYPE` char(11) DEFAULT NULL COMMENT '类型,01-流入;02-流出', PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='信息表'; INSERT INTO TB_TABLE VALUES('1','111',120,'01'); INSERT INTO TB_TABLE VALUES('2','111',80,'02'); INSERT INTO TB_TABLE VALUES('3','111',30,'01'); INSERT INTO TB_TABLE VALUES('4','222',70,'01'); INSERT INTO TB_TABLE VALUES('5','222',50,'02');
预期输出效果:
业务编号 流入金额 流出金额
111 150 80
222 70 50
方法一:
select t.biz_num, sum(case when t.type='01' then t.biz_amt end) as bizAmtIn, sum(case when t.type='02' then t.biz_amt end) as bizAmtOut from tb_table t where t.type in ('01','02') group by t.biz_num
方法二:
select t.biz_num, sum(if(t.type='01',t.biz_amt,0)) as bizAmtIn, sum(if(t.type='02',t.biz_amt,0)) as bizAmtOut from tb_table t where t.type in ('01','02') group by t.biz_num;
相关推荐
本汇总将全面介绍MySQL中的基本查询语法以及高级查询技巧。 1. **基础查询** - **SELECT语句**: 用于从表中选择数据。基本格式为 `SELECT column1, column2... FROM table_name;` - **WHERE子句**: 用于过滤结果...
### MySQL查询指令汇总 #### 一、MySQL 查询语法基础 MySQL 是一款广泛使用的开源关系型数据库管理系统,其查询语句的基础构建块是 `SELECT` 语句。通过使用不同的组合和选项,`SELECT` 语句能够实现复杂的数据...
MySQL是目前广泛使用的开源关系型数据库管理系统(RDBMS),它使用结构化查询语言(SQL)进行数据库管理,本文旨在总结MySQL操作相关的知识点,内容涵盖了MySQL数据类型、数据库和数据表操作、查询语言、约束、事务、...
本资源“常用 SQL语句汇总,共 25 条.zip”提供了一个MySQL数据库的SQL语句集合,对于初学者和中级程序员来说是极好的学习材料。以下是对这25条SQL语句的详细解读: 1. **SELECT**:用于从表中选择数据,是最基础的...
5. **主键与外键**: 主键是唯一标识表中每一行的字段,外键则用于关联两个表,实现参照完整性。 6. **存储引擎**: MySQL有多种存储引擎,如InnoDB(支持事务处理和外键)、MyISAM(读写速度快,不支持事务)等。 **...
这篇笔记和操作汇总将深入探讨MySQL的基本概念、安装与配置、数据类型、表的创建与管理、查询操作、事务处理、索引、视图、存储过程以及备份与恢复等关键知识点。 一、基本概念 1. 数据库:存储数据的容器,由一...
- **视图**:虚拟表,根据查询结果创建,提供一个简化或定制的数据视图。 - **存储过程和函数**:预编译的SQL代码集合,可以封装复杂的操作逻辑。 了解并掌握这些MySQL知识点,不仅可以应对面试,也能在实际工作...
INNER JOIN返回两个表中匹配的行,LEFT JOIN返回左表的所有行及右表匹配的行,RIGHT JOIN反之,FULL JOIN返回两个表的所有行。 六、子查询 子查询是嵌套在其他查询中的查询,可以用于创建复杂的查询结构。例如,找...
7. **DISTINCT关键字**:用于去除查询结果中的重复行。例如,`SELECT DISTINCT 列名 FROM 表名`返回列名的所有唯一值。 8. **INSERT INTO**:向表中插入新记录,如`INSERT INTO 表名 (列1, 列2) VALUES (值1, 值2)`...
5. **联接查询(JOIN)**:将两个或更多表的数据合并在一起。常见的JOIN类型包括INNER JOIN, LEFT JOIN, RIGHT JOIN, 和 FULL OUTER JOIN。例如: ```sql SELECT * FROM table1 INNER JOIN table2 ON table1....
6. **联接操作**:SQL的`JOIN`语句用于合并来自两个或更多表的数据。有多种类型的联接,如内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)和全连接(FULL JOIN)。 7. **分组和聚合**:使用`GROUP BY`和...
- **Row-based**:记录每一行数据的变化,适用于大多数情况,因为它可以捕获所有的数据更改。 - **Statement-based**:记录执行的SQL语句,这种方式占用空间较少,但可能因为某些语句无法复制而导致问题。 #### 二...
文档的使用方法是基于用户已经下载并安装好某个SQL工具的前提下,着重于“速查”的功能,用户可以通过搜索关键字来快速找到并查询SQL的相关用法。本篇文档涵盖了SQL学习的基础和进阶知识点,适合初学者和希望提高...
- 连接查询:JOIN操作用于合并来自两个或更多表的数据。 - 嵌套查询:在一个查询语句中嵌套另一个查询语句,用于满足更复杂的查询需求。 - 联合查询:UNION操作用于合并多个查询的结果集。 - 使用内置函数:如日期...
- **GROUP BY子句**:用于将查询结果分组。 - **HAVING子句**:与GROUP BY子句一起使用,指定分组后的条件。 #### 第六天:表的联合 - **在一个SELECT语句中使用多个表**:通过INNER JOIN、LEFT JOIN、RIGHT JOIN等...
- `JOIN`用于将两个或更多表中的相关行组合在一起,依据它们之间的关联。 - `INNER JOIN`返回两个表中匹配的行。 - `LEFT JOIN`返回左表的所有行,即使右表没有匹配的行,用NULL填充。 - `RIGHT JOIN`反之,返回...
11.8.1 将结果集转置为一行 11.8.2 把结果集转置为多行 11.9 递归查询 11.9.1 Oracle中的CONNECT BY子句 11.9.2 Oracle中的SYS_CONNECT_BY_PATH()函数 11.9.3 My SQL Server和DB2中递归查询 附录A 常用...