如何按指定条件查询统计InventDim表中InventSerialId的数量
关联InventDim、InventSum统计符合条件序列号总数实现方案
数据库层面SQL查询
直接在业务库执行以下语句,把@给定ItemId、@给定仓库ID替换为实际参数即可:
-- 统计去重后的序列号总个数(同一个序列号有多条库存记录时只算1次) SELECT COUNT(DISTINCT id.InventSerialId) AS SerialCount FROM InventSum iss JOIN InventDim id ON iss.InventDimId = id.InventDimId WHERE iss.ItemId = @给定ItemId AND id.InventLocationId = @给定仓库ID AND (iss.PhysicalInvent > 0 OR iss.Picked > 0) AND id.InventSerialId != '' -- 排除没有序列号的库存记录 -- 如果需要统计所有带序列号的库存记录的总数量(同一个序列号多条记录多次计数),把上面的COUNT部分替换为: -- SELECT COUNT(id.InventSerialId) AS SerialTotalCount
Dynamics 365 Finance/AX 应用层X++查询
如果是在二开代码中实现,可使用以下X++语句:
InventSum inventSum; InventDim inventDim; int serialCount; // 替换为实际的物料ID、仓库ID ItemId targetItemId = 'ITEM0001'; InventLocationId targetWarehouse = 'WH001'; // 统计去重序列号数量 select count(RecId) from inventDim join inventSum where inventSum.InventDimId == inventDim.InventDimId && inventSum.ItemId == targetItemId && inventDim.InventLocationId == targetWarehouse && (inventSum.PhysicalInvent > 0 || inventSum.Picked > 0) && inventDim.InventSerialId != ''; serialCount = inventDim.RecId; info(strFmt("符合条件的序列号总数:%1", serialCount));
注意事项
- InventSerialId字段存储在InventDim库存维度表中,关联时必须保证InventDimId关联准确
- 如果需要统计每个序列号对应的可用库存数量,可以在select中添加
group by inventDim.InventSerialId,同时聚合inventSum.PhysicalInvent字段
内容的提问来源于stack exchange,提问作者simon peter
相关产品推荐
相关产品推荐

