oracle的存量,请教一个物料库存量查询的问题, 请进。

其实这个需求还是比较简单的, 只是查询物料的库存量和成本信息, 具体sql如下。  问题在于mtl_material_transactions、mtl_transaction_accounts这两张表中的数据量超大, 导致查询需要执行很长时间。

如果可以使用mtl_onhand_quantities_detail替代mtl_material_transactions, 执行效率应该会有提升。 另外, 如果不使用mtl_transaction_accounts, 物料成本信息又该如何获取呢?

SELECT mmt1.organization_id,

mmt1.subinventory_code,

mmt1.inventory_item_id,

SUM(mmt1.primary_quantity),

mt1.cost1,

SUM(mmt1.primary_quantity) * mt1.cost1

FROM inv.mtl_material_transactions mmt1,

mtl_system_items msi,

(SELECT mt.organization_id,

mt.inventory_item_id,

decode(SUM(mt.qty),0,0,SUM(mt.amt) / SUM(mt.qty)) cost1

FROM (SELECT mmt.organization_id,

mmt.inventory_item_id,

mmt.primary_quantity qty,

0 amt

FROM inv.mtl_material_transactions mmt

WHERE mmt.costed_flag IS NULL

AND mmt.transaction_type_id <> 80

UNION ALL

SELECT mta.organization_id,

mta.inventory_item_id,

0,

mta.base_transaction_value

FROM inv.mtl_transaction_accounts mta

WHERE mta.accounting_line_type = 1

AND mta.base_transaction_value <> 0) mt

GROUP BY mt.organization_id,

mt.inventory_item_id) mt1

WHERE mmt1.organization_id = mt1.organization_id

AND mmt1.inventory_item_id = mt1.inventory_item_id

AND mmt1.transaction_type_id <> 80

AND mmt1.costed_flag IS NULL

AND mmt1.organization_id = msi.organization_id(+)

AND mmt1.inventory_item_id = msi.inventory_item_id(+)

AND mmt1.subinventory_code IS NOT NULL

GROUP BY mmt1.organization_id,

mmt1.subinventory_code,

mmt1.inventory_item_id,

mt1.cost1

HAVING SUM(mmt1.primary_quantity) <> 0;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值