db2和oralce:用分析函数代替自连接

db2自连接用分析函数代替 
例如:
create table TEST
(
SNO    VARCHAR2(30),
SEQ_NUM    VARCHAR2(30),
CARD VARCHAR2(500)
);
insert into TEST values('stu1','1','ckzh11');
insert into TEST values('stu1','1','ckzh12');
insert into TEST values('stu2','2','ckzh21');
insert into TEST values('stu2','2','ckzh22');
insert into TEST values('stu2','2','ckzh23');
insert into TEST values('stu3','3','ckzh31');
insert into TEST values('stu4','4','ckzh41');
我想找出SNO ,SEQ_NUM只对一个CARD 的全表信息
由于之前并不清楚分析函数.写了一个自连接,个人觉得非常的麻烦,同时当表比较大的时候,也容易影响效率
select 
TEST.* from test A
left join 
 (select SNO   ,
SEQ_NUM    ,
count(*)
group by  
SNO  ,
SEQ_NUM    
having count(*)>1) B
on A.SNO =B.SNO   ;
改下成分析函数写法如下:
select * from (select CARD, SNO,SEQ_NUM,
 count(*) 
over(partition by SNO,SEQ_NUM) rn from TEST)a
where rn=1 
一步到位呐


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值