Показать сообщение отдельно
Старый 18.03.2010, 15:45   #11  
Rimantas is offline
Rimantas
Участник
 
304 / 16 (1) ++
Регистрация: 30.04.2004
Адрес: Utena , Lithuania
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
если вы уверены, в том что вот здесь вам совершенно точно не нужно округление:
Код:
nPrdSum += Currency::Amount(custInvTrns.LineAmount * ( custInvJrn.ExchRate ? custInvJrn.ExchRate / 100 : 1 ))
, то можно попытаться группировать по custInvJrn.ExchRate
Код:
     while select sum(Qty), sum(LineAmount) from custInvTrns 
      group by ExchRate
      index hint ItemIdIdx where
      custInvTrns.ItemId == invSum.ItemId &&
      custInvTrns.InvoiceDate >= dBgn        &&
      custInvTrns.InvoiceDate <= dEnd        &&
      custInvTrns.InventDimId == invSum.inventDimId
      join custInvJrn where custInvJrn.InvoiceId == custInvTrns.InvoiceId
      {
            nPrd    += custInvTrns.Qty;
            nPrdSum += custInvTrns.LineAmount * ( custInvJrn.ExchRate ? custInvJrn.ExchRate / 100 : 1 );
      }
, но сдаётся мне, что в общем случае без округления не обойтись
Уверен , точное ненужное ...

Но я думал обо том , как сделать с одним select , то ето похоже так :

Код:
   select sum(Qty), sum(LineAmount ) from custInvTrns 
      group by ExchRate
      index hint ItemIdIdx where
      custInvTrns.ItemId == invSum.ItemId &&
      custInvTrns.InvoiceDate >= dBgn        &&
      custInvTrns.InvoiceDate <= dEnd        &&
      custInvTrns.InventDimId == invSum.inventDimId
      join custInvJrn where custInvJrn.InvoiceId == custInvTrns.InvoiceId;
Как то хочеться while избежать ... Попробую важе предложение ...