oracle去重保留一条_oracle多表连接,其中有个表数据需要去重只取第一条

-- Create table

create table T110JQ

(

JQNO    varchar2(20) not null,

JQCHARA varchar2(20),

JQXZDM  varchar2(20),

SSDW    varchar2(20),

BJTYPE02. varchar2(20)

)

;

-- Create/Recreate primary, unique and foreign key constraints

alter table T110JQ

add constraint JQNO primary key (JQNO);

==============================================================================

-- Create table

create table TJQXZDM

(

JQXZCODE    varchar2(20) not null,

BZJQXZDM  varchar2(20)

)

;

-- Create/Recreate primary, unique and foreign key constraints

alter table TJQXZDM

add constraint JQXZCODE primary key (JQXZCODE);

==============================================================================

-- Create table

create table JL

(

DWCODE    varchar2(20) not null,

BZDWCODE  varchar2(20),

BZDWNAME  varchar2(20)

)

;

-- Create/Recreate primary, unique and foreign key constraints

alter table JL

add constraint DWCODE primary key (DWCODE);

==============================================================================

T110JQ表数据

JQNO JQCHARA JQXZDM SSDW BJTYPE

1 1 刑事案件 1001 445821 亲临

2 2 行政案件 1002 445822 亲临

3 3 民事案件 1003 445823 亲临

4 4 行政案件 1004 445821 亲临

TJQXZDM表数据

JQXZCODE BZJQXZDM

1 5 1001

2 6 1002

3 7 1003

4 8 1004

JL表数据

DWCODE BZDWCODE BZDWNAME

1 9 445821 芙蓉区分局

2 10 445821 万家丽派出所

3 11 445821 马王堆派出所

4 12 445822 天心区分局

5 13 445823 下河街派出所

6 14 445823 开福区派出所

========================================================

不去重的语句:

select t.jqno,t.*,z.* ,f.*

from T110JQ t,TJQXZDM z ,JL f

where t.jqxzdm=z.bzjqxzdm and f.bzdwcode=t.ssdw and t.bjtype='亲临' order by t.jqno DESC

得出的结果是:

JQNO JQNO JQCHARA JQXZDM SSDW BJTYPE JQXZCODE BZJQXZDM DWCODE BZDWCODE BZDWNAME

1 4 4 行政案件 1004 445821 亲临 8 1004 9 445821 芙蓉区分局

2 4 4 行政案件 1004 445821 亲临 8 1004 11 445821 马王堆派出所

3 4 4 行政案件 1004 445821 亲临 8 1004 10 445821 万家丽派出所

4 3 3 民事案件 1003 445823 亲临 7 1003 14 445823 开福区派出所

5 3 3 民事案件 1003 445823 亲临 7 1003 13 445823 下河街派出所

6 2 2 行政案件 1002 445822 亲临 6 1002 12 445822 天心区分局

7 1 1 刑事案件 1001 445821 亲临 5 1001 10 445821 万家丽派出所

8 1 1 刑事案件 1001 445821 亲临 5 1001 11 445821 马王堆派出所

9 1 1 刑事案件 1001 445821 亲临 5 1001 9 445821 芙蓉区分局

去重处理的语句:

select t.jqno,t.*,z.*,f.* from T110JQ t,TJQXZDM z,

(select * from (select rank() over(partition by bzdwcode order by dwcode desc) r,a.* from jl a) where r=1) f

where t.jqxzdm=z.bzjqxzdm and 1=1 and t.bjtype='亲临' and t.ssdw=f.bzdwcode

结果:

1 4 4 行政案件 1004 445821 亲临 8 1004 1 9 445821 芙蓉区分局

2 1 1 刑事案件 1001 445821 亲临 5 1001 1 9 445821 芙蓉区分局

3 2 2 行政案件 1002 445822 亲临 6 1002 1 12 445822 天心区分局

4 3 3 民事案件 1003 445823 亲临 7 1003 1 14 445823 开福区派出所

总结关键是JL表的去重,只取第一条语句:

(select * from (select rank() over(partition by bzdwcode order by dwcode desc) r,a.* from jl a) where r=1) f

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值