wzy25的个人空间

暂无签名

  • 博客访问: 1067122
  • 博文数量: 1435
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-30 13:47
个人简介

暂无介绍

ITPUB论坛APP

ITPUB论坛APP



APP发帖 享双倍积分

文章分类
文章存档

2010年(9)

2009年(7)

2008年(185)

2007年(454)

2006年(447)

2005年(329)

2004年(4)

我的朋友
微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

常用sql书写示例2 2010-03-25 16:45:41

分类: Oracle

常用sql书写示例2[@more@]

1. ROWNUM

检索出第MN的记录。

select b.seq,b.dept_name
from (select rownum seq,a.*
from t_dept a
where rownum<=
100
) b
where seq>
97 and seq<=100

结果为

SEQ DEPT_NAME

98 广州天河区二部六组

99 广州天河区十一部九组

100 广州天河区十二部十组

其中内层rownum<=100是必须的。

2. 存在性检查

1

select count(*)
from t_dept
where organ_id=
'101'
and rownum <
2; --该句省略时,若表内记录数很多则效率很低

2

假设t_dept.status非空

select min(status) status
from t_dept
where dept_code=
'1';

结果为空表示无记录,否则表示该记录的状态。

3. MERGE

若仅用来执行UPDATE,可设置INSERT为必违反约束的语句。

merge into t_customer a
using ( select *
from t_proposal_customer m
where m.gender=
'M'
) b
on (a.customer_id=b.customer_id)
when matched then
update set a.real_name=b.real_name,
a.birthday=b.birthday
when not matched then
insert(customer_id,real_name,birthday)
values(s_customer__customer_id.nextval,b.real_name,b.birthday)

4. Analytic Function

窗口函数使在明细查询时能以更高的效率执行聚类查询。

select item_id,policy_id,period_prem,
sum(period_prem) over(partition by policy_id) policy_prem,
sum(period_prem) over(partition by policy_id order by item_id) accu_prem
from t_policy_product
where policy_id in (
73,74)

结果为

ITEM_ID POLICY_ID PERIOD_PREM POLICY_PREM ACCU_PREM

114 73 1115.00 1526 1115

115 73 321.00 1526 1436

116 73 90.00 1526 1526

117 74 3336.00 3572 3336

118 74 236.00 3572 3572

阅读(3228) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册