Показать сообщение отдельно
Старый 04.01.2012, 14:18   #4  
Rimantas is offline
Rimantas
Участник
 
304 / 16 (1) ++
Регистрация: 30.04.2004
Адрес: Utena , Lithuania
Цитата:
Сообщение от ZVV Посмотреть сообщение
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 - если есть, то это ваш первый случай, если нет - второй.

Насколько это будет быстрее или медленнее, и, соответсвенно, целесообразно использовать, проверьте сами на своих данных.
Дело в том что в отчете может так выглядит :
товар кол1 приход отход кол2
тов1 0 10 -10 0 - в инветСумме уже нету , но были движения ,
тов2 10 0 -10 0 - тоже самое ,
тов22 0 10 0 10 - были движения , есть в инвентсумме ,
тов3 10 0 0 10 - нету движении ...

В моем варянте , 2-ом , чтобы неискать я сделал условие "!= 0" для количества в инвентсумме - чтобы поскорее все работало ... А можно как нибудь ещё добавить "или" в query ИнвентСума такое ?