oracle 基本语法 (2)

1.条件判断语句
CASE 
WHEN (条件1)
THEN  (条件成立返回什么1)
WHEN (条件2)
THEN  (条件成立返回什么2)
ELSE  (不成立返回什么)
END;


2.判断
DECODE(条件值,'值1','返回值1','值2','返回值2',...,'缺省值');
条件值 = 值1 就返回值1,=值2 就返回值2,都不等于就返回缺省值。


3.ROWNUM (伪列)


4.row_number() over (order by col desc) (伪列)
例:SELECT xfbh, row_number() OVER(ORDER BY col)  FROM T_HJXF_HJD_JBXX
产生伪列并按col字段排序


5.GROUPING(值)   (使用在group by中)
如果'值'为空就返回1,不为空就返回0。


6.DISTINCT(这个关键字来过滤掉多余的重复记录只保留一条)
例:select distinct dw from T_OA_TXLXX (过滤掉dw的字段的重复记录)


7.UNION (ALL) 连接 (并集) (相同的表结构才能连接)
UNION ALL 连接全部包括重复的记录
UNION 连接不包括重复的记录
例:
SELECT * FROM T_HJXF_HJD_JBXX
UNION ALL
SELECT * FROM T_HJXF_HJD_JBXX


8.intersect 表取交集 (交集)
SELECT * FROM T_HJXF_HJD_JBXX
INTERSECT
SELECT * FROM T_HJXF_HJD_JBXX


9.minus 表取差集 (差集)
SELECT * FROM T_HJXF_HJD_JBXX
MINUS
SELECT * FROM T_HJXF_HJD_JBXX

10.NVL(a,b) 如果a为空就返回b,如果不为空就返回a
SELECT NVL('AA','BB')  FROM DUAL;

11.group by (rollup|cube)
rollup 上钻,如rollup(a,b)的结果集相当于以下三部分的合集:group by a,group by a,b,不加group by子句的组合函数结果。
cube立方体,如cube(a,b) 的结果相当于a,b全部可能组合group by结果合集:group by a,group by b,group by ab,不加group by子句的组合函数结果。


举例:
SQL> select * from t1;
         A          B      VALUE 
---------- ---------- ---------- 
       111          1       9000 
       123          2       7000 
       111          2       1000 
       122          3       2000 
       123          5       3000 
       135          3       4000 
6 rows selected.
SQL> select a,b,sum(value) from t1 group by rollup(a,b);
         A          B SUM(VALUE)
---------- ---------- ----------
       111          1       9000
       111          2       1000
       111                 10000
       122          3       2000
       122                  2000
       123          2       7000
       123          5       3000
       123                 10000
       135          3       4000
       135                  4000
                           26000
11 rows selected.
SQL> select a,b,sum(value) from t1 group by cube(a,b);
         A          B SUM(VALUE)
---------- ---------- ----------
                           26000
                    1       9000
                    2       8000
                    3       6000
                    5       3000
       111                 10000
       111          1       9000
       111          2       1000
       122                  2000
       122          3       2000
       123                 10000
       123          2       7000
       123          5       3000
       135                  4000
       135          3       4000
15 rows selected.




12.ADD_MONTHS(time,months)函数可以得到某一时间之前或之后n个月的时间
例: select add_months(sysdate,-6) from dual; 该查询的结果是当前时间半年前的时间
select add_months(sysdate,6) from dual; 该查询的结果是当前时间半年后的时间

13.with as 用法
其实就是把一大堆重复用到的SQL语句放在with as 里面,取一个别名,后面的查询就可以用它
这样对于大批量的SQL语句起到一个优化的作用,而且清楚明了
例:
sql1 as (select to_char(a) s_name from test_tempa),
sql2 as (select to_char(b) s_name from test_tempb where not exists (select s_name from sql1 where rownum=1))
select * from sql1
union all
select * from sql2
union all
select 'no records' from dual
where not exists (select s_name from sql1 where rownum=1)
and not exists (select s_name from sql2 where rownum=1);
例:
with a as (select * from test)
select * from a;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值