IBM Maximo:使用MatRecTrans表构建特定库存零件查询的问题
解决Inventory零件查询的过滤条件问题
你需要结合MATRECTRANS表的两个核心条件来完善查询:一是筛选出收货日期满12个月的零件,二是排除近12个月有资产发放记录的零件。以下是调整后的完整查询逻辑:
SELECT i.itemnum, i.location, i.siteid, i.itemsetid FROM inventory i WHERE -- 零件状态非废弃且有可用库存 EXISTS ( SELECT 1 FROM synonymdomain sd WHERE sd.domainid = 'ITEMSTATUS' AND sd.maxvalue != 'OBSOLETE' AND sd.value = i.status ) AND EXISTS ( SELECT 1 FROM invbalances ib WHERE ib.itemnum = i.itemnum AND ib.location = i.location AND ib.siteid = i.siteid AND ib.itemsetid = i.itemsetid AND ib.curbal != 0 ) -- 最后一次发放日期早于12个月前 AND i.lastissuedate < CURRENT DATE - 12 MONTH -- 条件1:存在至少一条收货记录,且收货日期早于当前日期12个月 AND EXISTS ( SELECT 1 FROM matrectrans mr WHERE mr.itemnum = i.itemnum AND mr.location = i.location AND mr.siteid = i.siteid AND mr.itemsetid = i.itemsetid AND mr.issuetype = 'RECEIPT' AND mr.transdate <= CURRENT DATE - 12 MONTH ) -- 条件2:近12个月内无发放给资产的记录(注意issuetype需匹配你系统的实际值) AND NOT EXISTS ( SELECT 1 FROM matrectrans mr WHERE mr.itemnum = i.itemnum AND mr.location = i.location AND mr.siteid = i.siteid AND mr.itemsetid = i.itemsetid -- 替换为你系统中"发放给资产"对应的issuetype值,比如'ISSUE' AND mr.issuetype IN ('ISSUE') AND mr.transdate >= CURRENT DATE - 12 MONTH );
关键细节说明:
- 用
EXISTS关联MATRECTRANS表,确保零件存在符合时间要求的收货记录; - 用
NOT EXISTS排除近12个月内有资产发放行为的零件,注意issuetype需要根据你系统的实际配置调整; - 保留了你原查询中关于零件状态、库存余额的校验逻辑,保证结果的有效性。
内容的提问来源于stack exchange,提问作者Strangeleak
相关产品推荐
相关产品推荐

