做报表,写Sql语句的一点收获

本文介绍了 Oracle 数据库中 SQL 的一些实用技巧,包括递归查询、NVL 函数使用、四舍五入函数 Round 以及结果集集合操作 Union、Intersect 和 Minus 的应用等。此外还展示了条件表达式 CASE WHEN 和 DECODE 函数的应用实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Sql语句一直是弱项,最近整报表可是痛苦呀,一个select能写两天。

整理一下一些常用的函数和写法放在这,以后忘了来看看,呵呵(针对Oracle数据库)。

例子都是生产中的例子,直接放上来保存着,后面要用的时候,我就直接复制过去用了,看起来比较费劲,例子大家还是不要看了。

一、递归查询

    Start with...Connect By,用于对一个树形结构的表递归遍历,Start with后面跟初始值,Connect By后面跟遍历条件。

    比如:

   


SELECT ORG_ID
  FROM PC_ORGANIZATION
 START WITH ORG_ID IN (
'HBlQAIBGob')
CONNECT BY PRIOR ORG_ID 
= PARENT_ID

 

二、NVL(eExpression1, eExpression2)从两个表达式返回一个非 null

如果 eExpression1 的计算结果为 null 值,则 NVL( ) 返回 eExpression2。如果 eExpression1 的计算结果不是 null 值,则返回 eExpression1eExpression1 eExpression2 可以是任意一种数据类型。如果 eExpression1 eExpression2 的结果皆为 null 值,则 NVL( ) 返回NULL

比如:

Nvl函数例子

 

三、Round 函数对指定数值进行四舍五入

    ROUND(number,[decimal_places])

参数:

number :预处理对数值。

decimal_places : 四舍五入后保留的小数位数。

示例同Nvl函数例子。

四、结果集集合操作 UnionUnion AllIntersectMinus

1、  Union,对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;

2、  Union All,对两个结果集进行并集操作,包括重复行,不进行排序;

3、  Intersect,对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;

4、  Minus,对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序。

注意:如果要人为的用Oder by 排序,order by必须放在最后一个集合里面。

比如:

Union All例子

 

五、条件表达式case when then else end

语法:CASE

WHEN eExpression1 THEN Value1;
WHEN eExpression2 THEN Value2;
WHEN eExpression3 THEN Value3;
ELSE Value4;
END

类似与程序里面的if else,就不过说了,看四中队例子。

六、Decode()函数

DECODE函数比较表达式和搜索字,如果匹配,对应的结果

语法:DECODE(value,if1,then1,if2,then2,if3,then3,...,else),表示如果value等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一个if值,则返回else

比如:

Decode 例子

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值