18.05.2004, 10:58 | #1 |
Решили жить вечно?
|
как писать select с групировкой
пишу код:
PHP код:
|
|
18.05.2004, 11:22 | #2 |
Moderator
|
Цитата:
Кажется по умолчанию компилятор сортирует по полям group by, но здесь мне нужна сортировка не по списку полей в group by
Соответстсвенно по ним можно и сортировать. Это я про SQL. |
|
18.05.2004, 11:39 | #3 |
Решили жить вечно?
|
Select field1, field3, sum(field2)
from table1 group by field1, field3 order by field3, field2, field1 Как? |
|
18.05.2004, 12:01 | #4 |
Участник
|
Руководство разработчика топик
"Select statement" Syntax of select SelectStatement = select Parameters Parameters = [ [ FindOptions ] [ FieldList from ] ] TableVariable [IndexClause] [ Options ] [ Where Clause ] [ JoinClause ] FindOptions = reverse | firstfast | firstonly | forupdate | nofetch FieldList = Field { , Field } | * Field = Aggregate ( FieldIdentifier ) | FieldIdentifier Aggregate = sum | avg | minof | maxof | count Options = (order by | group by ) FieldIdentifier [ Direction ] { , FieldIdentifier [ Direction ] } IndexCaluse = index Idx | index hint idx Direction = asc | desc WhereClause = where Expression JoinClause = [exists | notexists | outer ] join Parameters |
|
18.05.2004, 12:04 | #5 |
Moderator
|
ОК. Забудьте про Аксапту - нет Аксапты, есть Вы и СУБД - приведите мне название этого чудо-сервера который проглотит Ваш запрос и при этом грязно не ругнется
Поищите в инете "Понимание SQL" Грубера - его обычно рекомендуют изучающим SQL. Кроме того его не сложно найти в электронном виде. |
|
18.05.2004, 12:25 | #6 |
Участник
|
Цитата:
приведите мне название этого чудо-сервера который проглотит Ваш запрос и при этом грязно не ругнется
SELECT field1, SUM(Field2) FROM MyTable GROUP BY Field1 ORDER BY 2,1 Но в Axapta - это невозможно. Единственное решение - это СНАЧАЛА выполнить запрос, а ПОТОМ отсортировать этот запрос в нужной последовательности. Сортировку можно сделать при помощи дополнительных объектов MAP или RecordSortedList. Единственная проблема - это то, что придется построчно загонять информацию в эти объекты. Т.е. будет 2 цикла: один - выполнить запрос и загнать его результат в объект для сортировки, второй - сканирование отсортированного объекта. PS. Если речь идет об Axapta 3.0, то попробуй сделать этот запрос через View |
|
18.05.2004, 13:05 | #7 |
Moderator
|
На всякий случай, по поводу первого постинга и ошибки компиляции: в АХАРТА нельзя использовать order by и group by в одном запросе. Раздел справки "Differences between X++ and SQL in handling group by": "... As opposed to SQL, X++ does not allow group by and order by in the same select statement. This means that explicit sorting is not possible. ..."
__________________
Андрей. |
|
18.05.2004, 13:11 | #8 |
Moderator
|
Цитата:
Если я правильно понял, то нужно просто отсортировать еще и по столбцу с СУММОЙ.
Select field1, field3, sum(field2) as sumfield from table1 group by field1, field3 order by field3, sumfiled, field1 А просили вот это: Цитата:
Изначальное сообщение Хилари: Select field1, field3, sum(field2) from table1 group by field1, field3 order by field3, field2, field1 Цитата:
Кажется по умолчанию компилятор сортирует по полям group by, но здесь мне нужна сортировка не по списку полей в group by
|
|
18.05.2004, 13:16 | #9 |
Moderator
|
Цитата:
Сортировку можно сделать при помощи дополнительных объектов MAP или RecordSortedList.
|
|