ABAP: Как совместить выбор макс и количество? - PullRequest
0 голосов
/ 27 июня 2010

У меня есть это:

select ordernr 
from users 
having count(ordernr) = 
( select max(count(ordernr)) 
    from users where ordernr = ordernr 
    group by ordernr ) 
group by ordernr

для получения наиболее часто используемого номера заказа (ordernr) от всех пользователей.

Как включить его в систему ABAP SAP? Я пробовал это:

select SINGLE ordernr 
from ZDEVXXX_PROJECT3 INTO ordernrU 
having count( * ) = 
( select max( count( * ) ) 
    from ZDEVXXX_PROJECT3 
    where ordernr = ordernr 
    group by ordernr )

Но я получаю эту ошибку:

"Unknown columnname COUNT("

Как объединить максимум и количество в ABAP? SQL-запрос выше работает в Oracle для меня. Спасибо!

Ответы [ 3 ]

1 голос
/ 27 июня 2010

Вам нужно иметь COUNT (*) в наборе результатов, если вы хотите использовать его в предложении HAVING.См. http://help.sap.com/abapdocu_751/en/ABENWHERE_LOGEXP_ALL_ANY_SOME.htm для примера.

0 голосов
/ 22 августа 2010

Или вы можете использовать ABAP Open SQL. Это дает вам доступ к SQL вашей конкретной БД, и вы можете выполнить упомянутый выше запрос.

0 голосов
/ 11 августа 2010

Начиная с версии 6.1, вы можете использовать агрегаты в предложении HAVING.Но ваш ответ «Ни за что».Агрегаты должны быть только в форме aggr( {[distinct] column | *} ) Таким образом, вы должны

select count( * )
    into table itab
    from ZDEVXXX_PROJECT3 
    where ordernr = ordernr 
    group by ordernr

Затем найти программно максимальное количество отсчетовИ только потом использовать его в НАЛИЧИИ.

...