10.10.2006, 14:43 | #1 |
Участник
|
Применима ли сортировка вместе с группировкой?
Подскажите, добрые, люди, можно ли применять сортировку, совместно с группировкой, ну типа так:
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 |
Axapta
|
Нельзя в аксапте использовать одновременно и order by и group by.
Стр. 115 книги Еременко: Цитата:
В отличие от обычного SQL, в языке X++ недопустимо использование опций group by и order by в одном и том же операторе select. Это означает, что явная сортировка невозможна.
Последний раз редактировалось oip; 10.10.2006 в 14:50. |
|
10.10.2006, 14:47 | #3 |
Участник
|
А как тогда решить проблему?
|
|
10.10.2006, 14:54 | #4 |
Мрачный тип
|
Выбирайте сгруппированные данные во временную таблицу и ее сортируйте
|
|
10.10.2006, 14:56 | #5 |
Участник
|
в Вашем случае можно попробовать так "group by CostPrice, ItemId"
|
|
10.10.2006, 14:59 | #6 |
Участник
|
X++: while select sum(Qty) from inventJournalTrans group by ItemId, CostPrice where inventJournalTrans.ItemID== '4607114340013' X++: while select sum(Qty) from inventJournalTrans group by CostPrice where inventJournalTrans.ItemID== '4607114340013' Последний раз редактировалось Lemming; 10.10.2006 в 14:59. Причина: Немного опередили меня... |
|
10.10.2006, 16:54 | #7 |
Участник
|
Если в запросе явно указать index, в котором будет сортировка по CostPrice, то вне зависимости от полей группировки будет выводится по индесу.
То есть попробуйте так: X++: while select ItemId, CostPrice,sum(Qty) from inventJournalTrans index INDEXMY//order by CostPrice // ?????????????????? group by ItemId, CostPrice where inventJournalTrans.ItemID== '4607114340013' |
|
10.10.2006, 17:33 | #8 |
Модератор
|
Невозможна сортировка, отличная от списка полей в GROUP BY (по умолчанию при использовании GROUP BY ядром в запрос автоматически добавится аналогичный ORDER BY). Использование INDEX не добавляет в запрос никаких дополнительных операторов, связанных с сортировкой - наоборот, убирает автоматически добавленную сортировку по полям из GROUP BY. INDEX HINT - тоже, в чем можно убедиться, включив трассировку. И само по себе наличие хинта никак не гарантирует порядка, в котором будет отсортирован результат запроса. В любом случае добавление на интенсивно используемую таблицу левых индексов ради сортировки в единичном запросе - мягко говоря, не решение (даже если бы и работало)
Короче, ядро не перехитрить, как ни крутите Косых Артём уже привел вариант решения
__________________
-ТСЯ или -ТЬСЯ ? |
|
|
Похожие темы | ||||
Тема | Ответов | |||
Сортировка в гриде с двумя DataSource | 15 | |||
FormListControl сортировка | 2 | |||
Сортировка при группировке | 1 | |||
Сортировка в гриде | 15 | |||
Глючит сортировка записей | 5 |
|