有没有哪个大神能帮我优化一下这个 oracle sql,多余的字段我删除了,只有待优化的语句。
pharmacy.drug_stock 150000个
comm.drug_price_list 40000个
其余表中不超过1000个数量
select
(select amount_per_package
from comm.drug_price_list
where drug_code = d.drug_code
and min_spec = d.drug_spec
and drug_spec <> d.drug_spec
and firm_id = d.firm_id
and min_units = d.units
and units <> d.units
and start_date <= sysdate
and (stop_date >= sysdate or stop_date is null)
and rownum <= 1) as quantityPerPackage,
(select units
from comm.drug_price_list
where drug_code = d.drug_code
and min_spec = d.drug_spec
and drug_spec <> d.drug_spec
and firm_id = d.firm_id
and min_units = d.units
and units <> d.units
and start_date <= sysdate
and (stop_date >= sysdate or stop_date is null)
and rownum <= 1) as packageUnitCode,
(select units
from comm.drug_price_list
where drug_code = d.drug_code
and min_spec = d.drug_spec
and drug_spec <> d.drug_spec
and firm_id = d.firm_id
and min_units = d.units
and units <> d.units
and start_date <= sysdate
and (stop_date >= sysdate or stop_date is null)
and rownum <= 1) as packageUnit,
c.quantity -
(select nvl(sum(db.quantity), 0)
from drug_presc_master_temp da, drug_presc_detail_temp db
where da.presc_date = db.presc_date
and da.presc_no = db.presc_no
and db.drug_code = c.drug_code
and db.drug_spec = c.drug_spec
and db.firm_id = c.firm_id
and db.package_units = c.units
and da.dispensary = c.storage
and db.quantity > 0) as storeNum,
from comm.drug_dict a,
comm.drug_name_dict b,
comm.drug_price_list d,
pharmacy.drug_storage_dept e,
pharmacy.drug_kssxx g,
pharmacy.drug_jbyw h,
pharmacy.drug_same_yp i,
pharmacy.drug_stock c,
pharmacy.kss_drug_ps f
where a.drug_code = b.drug_code
and a.drug_code = c.drug_code
and a.drug_spec = c.drug_spec
and a.units = c.units
and a.drug_code = d.drug_code
and c.package_spec = d.drug_spec
and c.package_units = c.units
and c.firm_id = d.firm_id
and c.storage = e.storage_code
and a.drug_code = f.drug_code(+)
and a.drug_code = g.drug_code(+)
and a.drug_code = h.drug_code(+)
and a.drug_code = i.drug_code(+)
and e.serial_no is not null
and b.std_indicator in (0, 1)
and (c.supply_indicator = 1 or c.drug_bz = 1)
and (d.stop_date >= sysdate or d.stop_date is null)
and d.start_date <= sysdate
;
相关推荐
oracle删除重复数据方法
oracle删除重复数据方法。希望对大家有用。谢谢!
oracle删除非主键重复类型的数据
oracle删除非主键重复类型的数据,oracle删除非主键重复类型的数据
oracle 查询重复数据
可以查询表中的重复数据。一条sql语句。
oracle数据匹配merge into的实例详解
主要介绍了oracle数据匹配merge into的实例详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
oracle数据库添加或删除一列的sql语句
alert table 表名 add column 列名 alter table 表名 drop column 列名 eg: alter table TPointManage add AddPointsReason number(8) alter table textattrdetail drop column AddPointsReason 需要注意的一点,如果要修改的表,不是当前的用户的表,那么就需要添加上用户的名称。以及有修改此表的权限。 您可能感兴趣的文章:Oracle 查看表空间的大小及使用情况sql语句oracle常用sql语句Ora


