03.07.2023, 17:42 | #1 |
Участник
|
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 } Зачем вообще такое делать: включать в список полей одно и тоже значение несколько раз? Не знаю. Поймал это в коде, где второе вхождение того же поля было опечаткой. Но вообще говоря в стандарте SQL такое не запрещено. Возможно где-нибудь в групповых операциях вставки/обновления может понадобится одно и тоже значение записать в разные поля. В общем, будьте осторожны. Компилятор и рантайм такой код молча выполняют, но на выходе получается совсем не то что хотелось Если у кого будет возможность и желание, проверьте данное поведение на более поздних версиях. |
|
|
За это сообщение автора поблагодарили: Raven Melancholic (5), Logger (3), Pustik (5), A_BAS (2), Player1 (1), Manner (1). |
03.07.2023, 18:43 | #2 |
Программатор
|
в 12-ке также)
|
|
|
За это сообщение автора поблагодарили: S.Kuskov (2). |
03.07.2023, 22:20 | #3 |
Участник
|
Может это баг x++
А на постоянных табличках нормально все? Возможно проблема на этапе извлечения данных из рекордсета. Тогда иинаипостоянных могло быть. Надо проверять, в общем. |
|
04.07.2023, 09:00 | #4 |
Программатор
|
На постоянной нормально работает
|
|
05.07.2023, 17:24 | #5 |
Участник
|
На 365 не воспроизвелась проблема.
|
|
|
За это сообщение автора поблагодарили: S.Kuskov (2). |
05.07.2023, 18:44 | #6 |
Участник
|
|
|
06.07.2023, 13:55 | #7 |
Участник
|
|
|
|
|