2010-06-27 6 views
0

J'ai ceci:ABAP: Comment combiner select max et count?

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

pour obtenir le numéro de commande le plus utilisé (Commande no) de tous les utilisateurs.

Comment l'obtenir dans ABAP SAP System? Je l'ai essayé ceci:

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

Mais je reçois cette erreur:

"Unknown columnname COUNT(" 

Comment combiner max et compter dans ABAP? La requête SQL ci-dessus fonctionne dans Oracle pour moi. Merci!

Répondre

0

Depuis la version 6.1, vous pouvez utiliser des agrégats dans la clause HAVING. Mais votre réponse est "pas question". Les agrégats doivent être uniquement sous forme aggr({[distinct] column | *}) Vous devez donc à

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

alors de trouver un maximum de comptes programmaticaly. Et seulement ensuite de l'utiliser en condition d'avoir.

-1

Ou vous pouvez utiliser ABAP Open SQL. Il vous donne l'accès à SQL de votre base de données particulière et vous pouvez exécuter votre requête ci-dessus.

+0

Vous voulez probablement dire "SQL natif", et NON, ce n'est pas une approche à adopter dans le développement d'applications. – vwegert

+0

Tout peut être une approche si cela fonctionne. – damluar

+0

Et si vous ne vous souciez pas des personnes qui devront maintenir le * CENSORED * que vous avez laissé derrière, oui. – vwegert