Показать сообщение отдельно
Старый 13.05.2011, 08:31   #17  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,443 / 1777 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от 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.
За это сообщение автора поблагодарили: ZornFire (1).