Oracle SQL优化 求指教?????????????????????

 SQL如下:

select * from
(
  select * from   
  (
  select ROW_NUMBER() OVER(PARTITION BY v1.hphm ORDER BY v1.jgsj DESC) RN1,v1.hphm hphm1,v1.qdbh qdbh1,v1.jgsj jgsj1,v1.fxbh fxbh1
  from t_vms_passcar v1 where v1.qdbh=374 
  and v1.jgsj>to_date('2012-6-18 14:35:03','yyyy-mm-dd hh24:mi:ss')
  and v1.jgsj<to_date('2012-6-18 14:59:03','yyyy-mm-dd hh24:mi:ss')  
  ) 
  where RN1<2
)  p1
,
(
  select * from   (
  select ROW_NUMBER() OVER(PARTITION BY v2.hphm ORDER BY v2.jgsj DESC) RN2,v2.hphm hphm2,v2.qdbh qdbh2,v2.jgsj jgsj2,v2.fxbh fxbh2 from t_vms_passcar v2 where v2.qdbh=375 
  and v2.jgsj>to_date('2012-6-18 14:35:03','yyyy-mm-dd hh24:mi:ss')
  and v2.jgsj<to_date('2012-6-18 14:59:03','yyyy-mm-dd hh24:mi:ss')
  ) where RN2<2
)  p2
,
(
  select * from   (
  select ROW_NUMBER() OVER(PARTITION BY v3.hphm ORDER BY v3.jgsj DESC) RN3,v3.hphm hphm3,v3.qdbh qdbh3,v3.jgsj jgsj3,v3.fxbh fxbh3 from t_vms_passcar v3 where v3.qdbh=374 
  and v3.jgsj>to_date('2012-6-18 15:00:00','yyyy-mm-dd hh24:mi:ss')
  and v3.jgsj<to_date('2012-6-18 15:30:00','yyyy-mm-dd hh24:mi:ss')
  ) where RN3<2
)  p3
where p1.hphm1=p2.hphm2(+) and p1.hphm1=p3.hphm3(+)
union
select * from
(
  select * from   
  (
  select ROW_NUMBER() OVER(PARTITION BY v1.hphm ORDER BY v1.jgsj DESC) RN1,v1.hphm hphm1,v1.qdbh qdbh1,v1.jgsj jgsj1,v1.fxbh fxbh1
  from t_vms_passcar v1 where v1.qdbh=374 
  and v1.jgsj>to_date('2012-6-18 14:35:03','yyyy-mm-dd hh24:mi:ss')
  and v1.jgsj<to_date('2012-6-18 14:59:03','yyyy-mm-dd hh24:mi:ss')  
  ) 
  where RN1<2
)  p1
,
(
  select * from   (
  select ROW_NUMBER() OVER(PARTITION BY v2.hphm ORDER BY v2.jgsj DESC) RN2,v2.hphm hphm2,v2.qdbh qdbh2,v2.jgsj jgsj2,v2.fxbh fxbh2 from t_vms_passcar v2 where v2.qdbh=375 
  and v2.jgsj>to_date('2012-6-18 14:35:03','yyyy-mm-dd hh24:mi:ss')
  and v2.jgsj<to_date('2012-6-18 14:59:03','yyyy-mm-dd hh24:mi:ss')
  ) where RN2<2
)  p2
,
(
  select * from   (
  select ROW_NUMBER() OVER(PARTITION BY v3.hphm ORDER BY v3.jgsj DESC) RN3,v3.hphm hphm3,v3.qdbh qdbh3,v3.jgsj jgsj3,v3.fxbh fxbh3 from t_vms_passcar v3 where v3.qdbh=374 
  and v3.jgsj>to_date('2012-6-18 15:00:00','yyyy-mm-dd hh24:mi:ss')
  and v3.jgsj<to_date('2012-6-18 15:30:00','yyyy-mm-dd hh24:mi:ss')
  ) where RN3<2
)  p3
where p1.hphm1(+)=p2.hphm2 and p2.hphm2=p3.hphm3(+)
union
select * from
(
  select * from   
  (
  select ROW_NUMBER() OVER(PARTITION BY v1.hphm ORDER BY v1.jgsj DESC) RN1,v1.hphm hphm1,v1.qdbh qdbh1,v1.jgsj jgsj1,v1.fxbh fxbh1
  from t_vms_passcar v1 where v1.qdbh=374 
  and v1.jgsj>to_date('2012-6-18 14:35:03','yyyy-mm-dd hh24:mi:ss')
  and v1.jgsj<to_date('2012-6-18 14:59:03','yyyy-mm-dd hh24:mi:ss')  
  ) 
  where RN1<2
)  p1
,
(
  select * from   (
  select ROW_NUMBER() OVER(PARTITION BY v2.hphm ORDER BY v2.jgsj DESC) RN2,v2.hphm hphm2,v2.qdbh qdbh2,v2.jgsj jgsj2,v2.fxbh fxbh2 from t_vms_passcar v2 where v2.qdbh=375 
  and v2.jgsj>to_date('2012-6-18 14:35:03','yyyy-mm-dd hh24:mi:ss')
  and v2.jgsj<to_date('2012-6-18 14:59:03','yyyy-mm-dd hh24:mi:ss')
  ) where RN2<2
)  p2
,
(
  select * from   (
  select ROW_NUMBER() OVER(PARTITION BY v3.hphm ORDER BY v3.jgsj DESC) RN3,v3.hphm hphm3,v3.qdbh qdbh3,v3.jgsj jgsj3,v3.fxbh fxbh3 from t_vms_passcar v3 where v3.qdbh=374 
  and v3.jgsj>to_date('2012-6-18 15:00:00','yyyy-mm-dd hh24:mi:ss')
  and v3.jgsj<to_date('2012-6-18 15:30:00','yyyy-mm-dd hh24:mi:ss')
  ) where RN3<2
)  p3
where p1.hphm1(+)=p3.hphm3 and p2.hphm2(+)=p3.hphm3





例如:


现有3个表 字段一样  数据不一样
比如表结构是这样:
表一:
col1 clo2 clo3 clo4
1     a    b    c
2     d    e    f
4     g    h    i
表二:
col1 clo2 clo3 clo4
1     a    b    c
2     d    e    f
3     g    h    i
表三:  类似 表二
我想查询结果显示为:
col1 clo2 clo3 clo4    clo2_1 clo3_1 clo4_1  clo2_2 clo3_2 clo4_2  
1     a    b    c      a       b      c      .....类似
2     d    e    f      d       e      f      .....类似
3                      g    h    i           .....类似
4     g    h    i                            .....类似


请问Oracle    SQL   怎么解决?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值