1.Oracle中UNION 与UNION ALL的学习
两者都是对记录集操作,把来自许多SELECT语句的结果组合到一个结果集合中。不过值得注意的一点是,类型的一致性,既要满足,列于每个SELECT语句的对应位置的被选择的列应具有相同的类型。(例如,被第一个语句选择的第一列应和被其它语句选择的第一列具有相同的类型。)
UNION语法结构:
SELECT ...
UNION [ALL]
SELECT ...
[UNION [ALL]
SELECT ...
UNION 与 UNION ALL 的区别:
UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。但是,如果表数据量大,就可能导致用磁盘进行排序。
UNION ALL只是简单的将两个结果合并后就返回。这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。
从效率上说,UNION ALL要比UNION快很多,重要的一点就是不需要排序。在考虑两
者如何使用更适合某一种场景,就要从做UNION的两张表上考虑了,如果不会出现
重复数据,就优先考虑UNION ALL。
2.Oracle中函数DECODE
一个条件判断函数,可以进行多值判断。功能这个真的很黄很暴力。
decode的语法结构如下:
decode (expression, search_1, result_1)
decode (expression, search_1, result_1, search_2, result_2)
decode (expression, search_1, result_1, search_2, result_2, ...., search_n, result_n)
decode (expression, search_1, result_1, default)
decode (expression, search_1, result_1, search_2, result_2, default)
decode (expression, search_1, result_1, search_2, result_2, ...., search_n, result_n, default)
从上面的,可以很直观看出decode函数所需要填充的值,也很容易令人一看就懂decode的使用。
decode函数比较表达式和搜索字,如果匹配,返回结果;如果不匹配,返回default值;如果未定义default值,则返回空值。
可以用伪代码描述一下:
IF expression = search_1 THEN
RETURN result_1
IF expression = search_2 THEN
RETURN result_2
ELSE
RETURN default
使用方法:
1、比较大小
select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值
sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1
例如:
变量1=10,变量2=20
则sign(变量1-变量2)返回-1,decode解码结果为“变量1”,达到了取较小值的目的。
2、表、视图结构转化
现有一个商品销售表sale,表结构为:
month char(6) --月份
sell number(10,2) --月销售金额
现有数据为:
200001 1000
200002 1100
200003 1200
200004 1300
200005 1400
200006 1500
200007 1600
200101 1100
200202 1200
200301 1300
想要转化为以下结构的数据:
year char(4) --年份
month1 number(10,2) --1月销售金额
month2 number(10,2) --2月销售金额
month3 number(10,2) --3月销售金额
month4 number(10,2) --4月销售金额
month5 number(10,2) --5月销售金额
month6 number(10,2) --6月销售金额
month7 number(10,2) --7月销售金额
month8 number(10,2) --8月销售金额
month9 number(10,2) --9月销售金额
month10 number(10,2) --10月销售金额
month11 number(10,2) --11月销售金额
month12 number(10,2) --12月销售金额
结构转化的SQL语句为:
create or replace view v_sale(
year,month1,month2,month3,month4,
month5,month6,month7,month8,month9,
month10,month11,month12)
as
select substrb(month,1,4),
sum(decode(substrb(month,5,2),'01',sell,0)),
sum(decode(substrb(month,5,2),'02',sell,0)),
sum(decode(substrb(month,5,2),'03',sell,0)),
sum(decode(substrb(month,5,2),'04',sell,0)),
分享到:
相关推荐
UNION ALL 与 ORDER BY 用法详解 UNION ALL 和 ORDER BY 是 SQL 语言中的两个基本操作符,分别用于合并查询结果和排序数据。在 Oracle PL/SQL 中, UNION ALL 和 ORDER BY 的使用需要遵循一定的规则和限制。本文将...
- UNION/UNION ALL:合并来自多个SELECT语句的结果集。 9. **游标和递归函数** - CURSOR:定义和操作游标,用于处理多行结果集。 - CONNECT_BY_ROOT/CONNECT_BY_ISLEAF:在层次查询中使用,标识根节点或叶子节点...
以上只是Oracle众多函数中的一部分,实际应用中还有更多如正则表达式处理的`REGEXP_LIKE()`,时间间隔处理的`INTERVAL`,以及用于集合操作的`UNION`、`INTERSECT`和`MINUS`等。学习并熟练掌握这些函数,能极大地提升...
- UNION, UNION ALL, INTERSECT, MINUS:合并或比较多个查询的结果。 9. 过滤和条件函数: - DECODE():根据条件返回不同的值。 - CASE WHEN THEN END:更复杂的条件判断。 10. 其他特殊函数: - USER:返回...
- `UNION`, `UNION ALL`, `INTERSECT` 和 `MINUS`:用于合并或对比多个查询的结果。 9. **游标和递归函数** - 游标允许逐行处理查询结果。 - `CONNECT BY` 用于创建层次查询,常用于树状结构的数据。 10. **...
DECODE函数是Oracle中的一个条件分支函数,它的功能类似于编程语言中的if-else if-else语句。DECODE函数的格式为: ``` DECODE(字段或表达式, 值1, 结果1, 值2, 结果2, ... , 默认结果) ``` 如果字段或表达式的值...
Oracle中的`DECODE`函数是一种非常实用的工具,它允许你在SQL查询中执行简单的条件判断,类似于编程语言中的三元运算符或者IF-THEN-ELSE结构。`DECODE`函数的基本语法是: ```sql DECODE(条件, 值1, 返回值1, 值2, ...
Oracle数据库是世界上最流行的数据库管理系统之一,它提供了丰富的功能和语法,包括各种关键词和函数,用于高效的数据处理和查询。在本文中,我们将深入探讨一些Oracle中常用的关键词和函数。 首先,我们来看NVL()...
Oracle数据库是世界上最流行的数据库管理系统之一,它提供了丰富的内置函数,以帮助用户进行数据查询、处理和分析。在"Oracle 110个常用函数"这个资料中,我们很可能会找到一系列关于Oracle SQL函数的详细解释。这些...
根据提供的文档信息,本文将详细解析Oracle数据库中的关键SQL语句分类、常用SQL语句以及Oracle函数的应用场景。此外,还将简要介绍Oracle数据库的一些基本管理命令,如启动与关闭服务、用户管理等。 ### 一、Oracle...
通过使用`DECODE`函数,我们可以为每个可能的值设置条件,然后使用`MAX`函数来消除重复。例如,在上述描述中,对于`COUNTRY`和`CITY`字段,可以编写如下SQL: ```sql SELECT t.country, MAX(DECODE(t.city, '台北'...
Oracle 10G函数大全是数据库管理员和开发人员的重要参考资料,它涵盖了Oracle 10g版本中的各种内置函数,这些函数在SQL查询、PL/SQL编程以及数据库管理中发挥着关键作用。Oracle数据库是一个功能丰富的关系型数据库...
- `UNION / UNION ALL`: 合并两个或多个查询的结果集。 - `INTERSECT`: 找出多个查询结果集的交集。 - `MINUS`: 找出第一个查询结果集中不在第二个查询结果集中的行。 9. **游标和循环控制函数**: - `FETCH ...
Oracle数据库系统中,函数与查询是数据库操作的重要组成部分,它们帮助用户处理和分析数据。以下是对这些知识点的详细说明: 1. **单行函数**: 单行函数作用于一行数据并返回单个结果。它们可以应用于SELECT、...
"Oracle函数大全"这个资料包很可能包含了Oracle数据库中常用的函数及其用法,这对于数据库管理员(DBA)和开发人员来说是一份宝贵的资源。 1. **内置函数**: - **数学函数**:如`ABS()`返回绝对值,`SQRT()`求...
Oracle高级SQL学习与练习涵盖了数据库编程中的一系列高级主题,旨在帮助数据库开发者和管理员提高解决复杂问题的能力。在Oracle数据库系统中,高级SQL技能是进行高效数据管理、查询优化和复杂数据处理的基础。 1. ...
3. **函数替换**:Oracle的函数如TO_DATE或DECODE等,需要替换为Sql Server的对应函数,例如CONVERT或CASE语句。 4. **比较运算符**:检查所有比较运算符,例如Oracle中的`= ANY`或`= ALL`在Sql Server中可能是`= ...
- **Oracle** 支持 `DECODE` 函数,用于多条件选择。 - Oracle示例: ```sql SELECT DECODE(column, 'value1', result1, 'value2', result2, default_result) FROM table; ``` - 注意点: DB2中没有直接对应的...
Oracle 9i是一款历史悠久但依然具有重要参考价值的数据库管理系统,尤其对于理解Oracle数据库系统的基础功能和函数操作具有重要意义。本资源"ORACLE9I函数帮助(英文)"提供了全面的Oracle 9i函数列表及使用示例,是...
### Oracle经典练习知识点详解 #### 一、查询部门30中的所有员工信息 - **SQL语句**: `select * from scott.emp where deptno = '30'` - **知识点**: - 使用`SELECT *`: 选取表中的所有列。 - `WHERE`子句: 过滤...