AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.07.2023, 17:42   #1  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Select sum по временной таблице может удваивать значение
AX2009
Поймал очередной баг при работе с временными таблицами. Понятно что движок временных таблиц - это не настоящий SQL, и поэтому не все что работает для реальных таблиц также работает и для временных.

Если в одном select попытаться суммировать одно и тоже поле несколько раз, то значение будет получатся кратно больше
X++:
static void Job_TEST_DOUBLE_SUM(Args _args)
{
    TmpABC TmpABC;
    ;
    TmpABC.clear();
    TmpABC.Amount = 123;
    TmpABC.insert();

    select sum(Amount) from TmpABC;
    info(strfmt("%1", TmpABC.Amount)); //123,00

    select sum(Amount), sum(Amount) from TmpABC;
    info(strfmt("%1", TmpABC.Amount)); //246,00

    select sum(Amount), sum(Amount), sum(Amount) from TmpABC;
    info(strfmt("%1", TmpABC.Amount)); //369,00
}
Интересно, что с count() такой ошибки нет.

Зачем вообще такое делать: включать в список полей одно и тоже значение несколько раз? Не знаю. Поймал это в коде, где второе вхождение того же поля было опечаткой.
Но вообще говоря в стандарте SQL такое не запрещено. Возможно где-нибудь в групповых операциях вставки/обновления может понадобится одно и тоже значение записать в разные поля.
В общем, будьте осторожны. Компилятор и рантайм такой код молча выполняют, но на выходе получается совсем не то что хотелось

Если у кого будет возможность и желание, проверьте данное поведение на более поздних версиях.
За это сообщение автора поблагодарили: Raven Melancholic (5), Logger (3), Pustik (5), A_BAS (2), Player1 (1), Manner (1).
Старый 03.07.2023, 18:43   #2  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
в 12-ке также)
За это сообщение автора поблагодарили: S.Kuskov (2).
Старый 03.07.2023, 22:20   #3  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Может это баг x++
А на постоянных табличках нормально все?
Возможно проблема на этапе извлечения данных из рекордсета. Тогда иинаипостоянных могло быть. Надо проверять, в общем.
Старый 04.07.2023, 09:00   #4  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
На постоянной нормально работает
Старый 05.07.2023, 17:24   #5  
Manner is offline
Manner
Участник
 
84 / 16 (1) ++
Регистрация: 13.07.2004
На 365 не воспроизвелась проблема.
За это сообщение автора поблагодарили: S.Kuskov (2).
Старый 05.07.2023, 18:44   #6  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Manner Посмотреть сообщение
На 365 не воспроизвелась проблема.
А пробовали на временной таблице InMemory или TempDB?
Старый 06.07.2023, 13:55   #7  
Manner is offline
Manner
Участник
 
84 / 16 (1) ++
Регистрация: 13.07.2004
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
А пробовали на временной таблице InMemory или TempDB?
Я скопипастил твой код и запустил. Сейчас посмотрел TmpABC - это TempDB.
Взял для примера таблицу TmpFrmVirtual - это InMemory. На InMemory проблема воспроизводится.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Фильтр по временной таблице Yeah))) DAX: Программирование 5 10.03.2017 14:09
emeadaxsupport: Trade Allowance Management Blog Series – Trade Allowance Agreements for Lump Sum Blog bot DAX Blogs 0 27.10.2015 19:11
может логичнее select firstOnly firstFast, вместо select firstOnly NetBus DAX: База знаний и проекты 24 28.12.2006 12:15
Работает ли группировка во временной таблице? Pegiy DAX: Программирование 6 10.09.2004 12:56
Группировка во временной таблице LCh DAX: Программирование 5 10.06.2004 14:07

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 09:16.