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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.10.2006, 14:43   #1  
oleg_e is offline
oleg_e
Участник
 
71 / 10 (1) +
Регистрация: 12.01.2006
Адрес: Moscow
Применима ли сортировка вместе с группировкой?
Подскажите, добрые, люди, можно ли применять сортировку, совместно с группировкой, ну типа так:

while select ItemId, CostPrice,sum(Qty)
from inventJournalTrans
order by CostPrice // ??????????????????
group by ItemId, CostPrice
where inventJournalTrans.ItemID== '4607114340013'

Только ругается здесь...
Старый 10.10.2006, 14:46   #2  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Нельзя в аксапте использовать одновременно и order by и group by.

Стр. 115 книги Еременко:
Цитата:
В отличие от обычного SQL, в языке X++ недопустимо использование опций group by и order by в одном и том же операторе select. Это означает, что явная сортировка невозможна.

Последний раз редактировалось oip; 10.10.2006 в 14:50.
Старый 10.10.2006, 14:47   #3  
oleg_e is offline
oleg_e
Участник
 
71 / 10 (1) +
Регистрация: 12.01.2006
Адрес: Moscow
А как тогда решить проблему?
Старый 10.10.2006, 14:54   #4  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
886 / 389 (14) ++++++
Регистрация: 24.01.2005
Адрес: Томск
Выбирайте сгруппированные данные во временную таблицу и ее сортируйте
Старый 10.10.2006, 14:56   #5  
Косых Артём is offline
Косых Артём
Участник
Axapta Retail User
 
123 / 77 (3) ++++
Регистрация: 03.09.2004
Адрес: Москва
в Вашем случае можно попробовать так "group by CostPrice, ItemId"
Старый 10.10.2006, 14:59   #6  
Lemming is offline
Lemming
Участник
Аватар для Lemming
 
1,144 / 343 (14) ++++++
Регистрация: 20.04.2004
Адрес: Москва, Чайнатаун в Люблино
Записей в блоге: 10
X++:
while select sum(Qty) from inventJournalTrans
       group by ItemId, CostPrice
       where inventJournalTrans.ItemID== '4607114340013'
Если я правильно понимаю, то возможно так? Причем группировать и не надо, раз задан критерий ItemId:

X++:
while select sum(Qty) from inventJournalTrans
       group by CostPrice
       where inventJournalTrans.ItemID== '4607114340013'
update: Опередили меня

Последний раз редактировалось Lemming; 10.10.2006 в 14:59. Причина: Немного опередили меня...
Старый 10.10.2006, 16:54   #7  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Если в запросе явно указать index, в котором будет сортировка по CostPrice, то вне зависимости от полей группировки будет выводится по индесу.

То есть попробуйте так:
X++:
while select ItemId, CostPrice,sum(Qty)
    from inventJournalTrans
    index INDEXMY//order by CostPrice // ??????????????????
    group by ItemId, CostPrice
    where inventJournalTrans.ItemID== '4607114340013'
где INDEXMY - индекс по CostPrice (первым в смысле в индексе он)
Старый 10.10.2006, 17:33   #8  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Невозможна сортировка, отличная от списка полей в GROUP BY (по умолчанию при использовании GROUP BY ядром в запрос автоматически добавится аналогичный ORDER BY). Использование INDEX не добавляет в запрос никаких дополнительных операторов, связанных с сортировкой - наоборот, убирает автоматически добавленную сортировку по полям из GROUP BY. INDEX HINT - тоже, в чем можно убедиться, включив трассировку. И само по себе наличие хинта никак не гарантирует порядка, в котором будет отсортирован результат запроса. В любом случае добавление на интенсивно используемую таблицу левых индексов ради сортировки в единичном запросе - мягко говоря, не решение (даже если бы и работало)

Короче, ядро не перехитрить, как ни крутите Косых Артём уже привел вариант решения
__________________
-ТСЯ или -ТЬСЯ ?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Сортировка в гриде с двумя DataSource ViV DAX: Программирование 15 05.06.2014 15:55
FormListControl сортировка maximka DAX: Программирование 2 26.12.2008 13:44
Сортировка при группировке fialka DAX: Программирование 1 21.08.2007 11:04
Сортировка в гриде Pegiy DAX: Функционал 15 06.12.2006 08:21
Глючит сортировка записей dd DAX: Функционал 5 17.08.2004 20:34

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

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

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