J'ai lu plusieurs sujet du forum sur le group by :
http://www.developpez.net/forums/d13...by-erreur-sql/
http://www.developpez.net/forums/d10...champs-resolu/
http://www.developpez.net/forums/d12...on-agregation/
Ansi que l'excellent article de Roland Bouman :
http://cedric-duprez.developpez.com/...group-by/#L9-C
Malgrès cela je n'arrive toujours pas à mes fins....
Explication du problème ,
Sur une base de donnée Orcale , j'ai une table HISTORIQUE :
HISTORIQUE_ID VERSION_COURANTE MACHINE_ID DATE_LOG NOM_USER APPLICATION_ID
Exemple de données :
6;2013-07-02 v2;6545612313561322;03/07/2013 11:43;Toto;application2
5;2013-07-02 v2;6545612313561322;03/07/2013 11:43;Toto;application1
4;2013-07-02 v1;6545612313561322;03/07/2013 11:41;Titi;application1
3;2013-07-02 v1;6545612313561322;03/07/2013 11:41;Titi;application2
2;2013-07-02 v1;5654654654564654;03/07/2013 10:34;Toto;application2
1;2013-07-02 v1;5654654654564654;03/07/2013 10:34;Toto;application1
Je souhaite récupérer pour chaque machine et chaque application installé sur la machine, la dernière version du logiciel installé.
Ma requette :
Évidement je me prend l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT MAX(HISTORIQUE.DATE_LOG) HISTORIQUE.MACHINE_ID, HISTORIQUE.APPLICATION_ID,VERSION_COURANTE FROM FSAGATEWAY.HISTORIQUE HISTORIQUE GROUP BY HISTORIQUE.MACHINE_ID, HISTORIQUE.APPLICATION_ID....ORA-00979 N'est pas une expression group by
J'opte pour la solution proposé dans l'article , à savoir utilisé un fonction d'agrégation MAX par exemple sur la colonne VERSION_COURANTE.
(Je sentais déjà que ce n'etait pas la bonne solution à utiliser...)
Ce qui donne :
ça fonctionnement uniquement parce que mes noms de version utilisent (pour l'instant) une syntaxe croissante (alphabétiquement parlent). Donc les résultat de MAX (DATE_LOG) et de MAX(VERSION_COURANTE) "coïncide".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT MAX(HISTORIQUE.DATE_LOG) HISTORIQUE.MACHINE_ID, HISTORIQUE.APPLICATION_ID,MAX(VERSION_COURANTE) FROM FSAGATEWAY.HISTORIQUE HISTORIQUE GROUP BY HISTORIQUE.MACHINE_ID, HISTORIQUE.APPLICATION_ID
Demain ... j'ai ce jeu de donnée plutôt :
6;alpha;6545612313561322;03/07/2013 11:43;Toto;application2
5;alpha;6545612313561322;03/07/2013 11:43;Toto;application1
4;2013-07-02 v1;6545612313561322;03/07/2013 11:41;Titi;application1
3;2013-07-02 v1;6545612313561322;03/07/2013 11:41;Titi;application2
2;v1.0;5654654654564654;03/07/2013 10:34;Toto;application2
1;v1.0;5654654654564654;03/07/2013 10:34;Toto;application1
ça ne marchera pas ....
HELP ME
Partager