2 Rimantas
Одним запросом это можно сделать через Outer Join с группировкой, примерно так:
X++:
Select sum(xxxQty), sum(yyyAmount), ... from InventSum
group by ItemId, InventDimId, ...
outer join InventTrans
group by ItemId
where InventTrans.InventDimId == InventSum.InventDimId
&& InventTrans.ItemId == InventSum.ItemId
&& InventTrans.DatePhysical >= dBgn;
Хинты, условия и нужные поля (там где многоточия) добавить по вкусу...
В цикле проверять заполненность поля InventTrans.ItemId - если есть, то это ваш первый случай, если нет - второй.
Насколько это будет быстрее или медленнее, и, соответсвенно, целесообразно использовать, проверьте сами на своих данных.