Показать сообщение отдельно
Старый 21.12.2010, 00:12   #1  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,342 / 3563 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Группировка по полю GUID
Столкнулся тут с интересным поведением группировки по полю типа GUID в 4.0 и 2009 RU5.

Имеем тестовый джоб
X++:
static void Job1(Args _args)
{
    Table1 t;
    ;
    t.StringField = 'aa';
    t.GuidField   = newguid();
    t.RealField   = 2;
    t.insert();
    t.StringField = 'aa';
    t.GuidField   = newguid();
    t.RealField   = 2;
    t.insert();
    t.StringField = 'bb';
    t.GuidField   = newguid();
    t.RealField   = 2;
    t.insert();
    while select sum(RealField) from t
        group by StringField, GuidField
    {
        info(strfmt("%1 %2 %3", t.StringField, t.GuidField, t.RealField));
    }
}
В DAX 2009 RU5 все отрабатывает достаточно ожидаемо:
Название: DAX2009RU5.PNG
Просмотров: 1779

Размер: 32.8 Кб

А вот в DAX 4.0 SP2 нас поджидает сюрприз:
Название: DAX40SP2.PNG
Просмотров: 1791

Размер: 15.4 Кб

Результат одинаковый - независимо от того - временная таблица или постоянная (т.е. есть она в БД или нет).

В обоих случаях в качестве СУБД использовался как SQL Server 2005, так и SQL Server 2008 R2.
Собственно - вывод - будьте аккуратнее
__________________
Возможно сделать все. Вопрос времени

Последний раз редактировалось sukhanchik; 21.12.2010 в 09:31.
За это сообщение автора поблагодарили: Logger (2).