Цитата:
Сообщение от
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 избежать ... Попробую важе предложение ...