注册 登录
编程论坛 Oracle论坛

如何提高查询效率的问题请教

cloudshare 发布于 2022-03-19 21:10, 1148 次点击
我有两张表之间进行查询,附件是我写的语句,但是我感觉很笨拙,所以想请教一下各位是否有更灵巧,更快的写法!
表1:凭证明细表    记录数:500000条
会计分录编码id    借方金额               
01                     10               
02                     20               
03                     30               
                    
                    
表2:辅助核算表    记录数:30000条               
                    
会计分录编码id    辅助核算类型id    辅助核算名称    辅助核算编号        
01                     SZXM          住宿费           0101        
01                      BM          市场部           BM01        
02                     SZXM       手机话费            0102        
02                      BM        财务部                BM02        
03                     SZXM         差旅费              0103        
03                      BM        技术部              BM03        
                    
                    
查询结果如下                    
                    
01    市场部    BM01    住宿费        0101    10
02    财务部    BM02    手机话费    0103    20
03    技术部    BM03    差旅费        0103    30




select a.会计分录编码id,b.辅助核算编号,b.辅助核算名称,c.辅助核算编号,c.辅助核算名称,sum(借方金额)  from 表1 a
  left join
        (select 会计分录编码id,辅助核算名称,辅助核算编号 from 表2 where 辅助核算类型id='bm') b on a.会计分类编码id=b.会计分录编码id
  left join
      (select 会计分录编码id,辅助核算名称,辅助核算编号 from 表2 where 辅助核算类型id='bm') c on a.会计分类编码id=c.会计分录编码id
group by a.会计分录编码id,b.辅助核算编号,b.辅助核算名称,c.辅助核算编号,c.辅助核算名称
1 回复
#2
yiyanxiyin2023-07-07 11:48
select a.会计分录编码id,b.辅助核算编号,b.辅助核算名称,c.辅助核算编号,c.辅助核算名称,sum(借方金额)  from 表1 a
  left join 表2 b on a.会计分类编码id=b.会计分录编码id and  b.辅助核算类型id='BM'
  left join  表2 c on a.会计分类编码id=c.会计分录编码id and  c.辅助核算类型id='SZXM'
group by a.会计分录编码id,b.辅助核算编号,b.辅助核算名称,c.辅助核算编号,c.辅助核算名称
1