Цитата:
Сообщение от
mazzy
попробуйте задать агрегатную функцию count(recid) для внешней таблицы.
Я обычно в таких случаях "выворачиваю" запрос так чтобы внешней оказалась та таблица по которой задана агрегатная функция. Тем более в данном примере дополнительные таблицы нужны разве что для фильтрации (поле AssetStandardId есть непосредствено в таблице проводок RAssetTrans)
X++:
static void Job15(Args _args)
{
TextBuffer text = new TextBuffer();
RAssetTrans RAssetTrans;
RAssetTable RAssetTable;
TransDate _transDate = 31\01\2011;
;
while select sum(AmountMST) from RAssetTrans
group by AccountNum, AssetStandardId, AssetTransType
where
RAssetTrans.TransDate <= _transDate
// exists join RAssetTable
// where
// RAssetTable.AccountNum == RAssetTrans.AccountNum
{
text.appendText(strfmt("%1\t%2\t%3\t%4\n",
RAssetTrans.AccountNum,
RAssetTrans.AssetStandardId,
RAssetTrans.AssetTransType,
RAssetTrans.AmountMST));
}
text.toClipboard();
}
И ещё. Если выбирать суммы в валюте (AmountCUR), то не плохо было бы ещё выбрать и саму валюту (CurrencyCode). Если суммы нужны в основной валюте то выбирать нужно поле AmountMST.