28.07.2014, 14:53 | #1 |
Участник
|
Полные предложения ORDER BY и GROUP BY
Версия системы AX2009. Примеров подобного кода в стандарте как-то ни разу не встречалось, как в прочем и задач, для которых это необходимо.
Пишу этот пост на случай вдруг ещё кто не знает. Неожиданно для себя обнаружил, что оказывается в X++ в предложения ORDER BY и GROUP BY можно включать поля не только текущего курсора но и присоединенных! Для этого достаточно указать имя соответствующего курсора перед именем поля. Пример: Такой обычный запрос отсортирует возвращаемые записи сначала по полям Field1 и field3 из таблицы Table1, а потом по полю Field2 из таблицы Table2. X++: while select Table1 order by Field1, field3 join Table2 order by Field2 {} X++: while select Table1 order by Table1.Field1, Table2.Field2, Table1.Field3 join Table2 {} |
|
|
За это сообщение автора поблагодарили: mazzy (2), rusk (1), trud (1), Pustik (2), sukhanchik (2), Krash (1), MikeR (1), ice (1), IvanS (1), jeky (1), kornix (3), Ярослав Щекин (3). |
28.07.2014, 23:09 | #2 |
MCT
|
Здорово, что тема order by, наконец, раскрыта.
А вот где собственно про GROUP BY и/или совместное использование, или я не правильно понял и прочитал тему сообщения?
__________________
Axapta book for developer |
|
29.07.2014, 08:25 | #3 |
Участник
|
Цитата:
Думаю не секрет, что группируя данные в запросе аксапта выполняет ещё и сортировку результата. В аксапте нельзя сгруппировать и при этом не отсортировать. К слову сказать, именно для этого направление сортировки ASC/DESC в аксапте имеет смысл (и это разрешено синтаксисом) задавать не только для ORDER BY, но и для GROUP BY. Последовательность полей в предложении GROUP BY важна именно с точки зрения сортировки полученного сгруппированного результата. |
|
29.07.2014, 21:21 | #4 |
MCT
|
Цитата:
Я, как бы это сказать, просто подумал, что это уже реализовали, просто я не знал. А это вроде, как для меня, были вещи очевидные, сорри.
__________________
Axapta book for developer |
|
30.07.2014, 08:34 | #5 |
Участник
|
Цитата:
Сообщение от MikeR
Я про то, что использовать вместе и GROUP BY и ORDER BY, причем ORDER BY какой-нить хитрый не те поля берет, что в GROUP BY , да и сортировочку разнонаправленную сделать. Ну как в классическом TSQL. Не могу сказать, что эта фича сильно востребована. Думаю и уверен, что даже наоборот в хорошо спроектированном приложение, такие выкрутасы даже не очень то и нужны, но всегда в жизни бывает НО.
Я, как бы это сказать, просто подумал, что это уже реализовали, просто я не знал. А это вроде, как для меня, были вещи очевидные, сорри. Может я что-то не понимаю. Можете привести пример такой хитровывернутой группировки с сортировкой в классическом TSQL, которую нельзя реализовать в аксапте. |
|
30.07.2014, 09:19 | #6 |
Участник
|
Цитата:
Код: SELECT ITEMID, COUNT(*) FROM INVENTTRANS GROUP BY ITEMID ORDER BY COUNT(*) |
|
|
За это сообщение автора поблагодарили: S.Kuskov (2). |
30.07.2014, 09:44 | #7 |
Участник
|
Цитата:
Вот такой запрос, например, тоже не получится на X++ реализовать, и совместное использование ORDER BY и GROUP BY здесь не причем. Код: SELECT * FROM INVENTTRANS ORDER BY INVENTTRANS.COSTAMOUNT / INVENTTRANS.QTY |
|
31.07.2014, 11:25 | #8 |
Участник
|
|
|
Теги |
group by, order by, select, x++, полезное |
|
|