Précédent   Forum des professionnels en informatique > Bases de données > DB2
DB2 Forum d'entraide technique sur la base de données DB2. Voir aussi -> Rubrique DB2
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/07/2007, 13h36   #1
Nouveau Membre du Club
 
Inscription : juillet 2003
Messages : 46
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 46
Points : 28
Points : 28
Par défaut Fonction a l'interieur de la clause group by

Bonjour,

j'essaye actuellement de faire des statistiques mois par mois et années par années.

normalement la requête SQL devrait être:

select count(id), MONTH(date) from table group by MONTH(date);

ou encore en passant par substring.

cependant il semble que la clause groupby de DB2 n'accepte pas les fonctions.
y a t-il un autre moyen de le faire?

merci d'avance
ultimax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2007, 14h25   #2
Membre du Club
 
Inscription : février 2007
Messages : 56
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 56
Points : 56
Points : 56
tu es sur quel db2 (version), sur quel OS ?

Sur un DB2 UDB 9 (LUW), ta requête est correcte...
clalevee est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2007, 14h46   #3
Nouveau Membre du Club
 
Inscription : juillet 2003
Messages : 46
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 46
Points : 28
Points : 28
je suis sous windows xp sp2,

et j'utilise la version 7.0.1.2 de db2.

j'ai l'erreur sqlcode = -104, sqlstate=42601 , sqlerrmc: (;for with fetch order union except queryno optimize

autant dire du chinois pour moi :-)
ultimax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2007, 15h12   #4
jab
Rédacteur
 
Avatar de jab
 
Homme Jean-Alain Baeyens
SharePoint developpeur
Inscription : février 2004
Messages : 1 172
Détails du profil
Informations personnelles :
Nom : Homme Jean-Alain Baeyens
Âge : 48
Localisation : Belgique

Informations professionnelles :
Activité : SharePoint developpeur
Secteur : Service public

Informations forums :
Inscription : février 2004
Messages : 1 172
Points : 3 131
Points : 3 131
Envoyer un message via ICQ à jab Envoyer un message via MSN à jab Envoyer un message via Skype™ à jab
Avec la version 8 pour XP cela fonctionne aussi. Je ne peux plus dire pour la 7.
jab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2007, 15h18   #5
Nouveau Membre du Club
 
Inscription : juillet 2003
Messages : 46
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 46
Points : 28
Points : 28
arf je pense que je vais être bon pour le coder dans mon programme parce que demander a une administration de changer de version pour une requête ca ne va pas le faire ...


edit: je viens de voir dans les posts en dessous que le group by en version 7 n'accepter pas les fonctions..

j'aurais du mieux lire
ultimax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2007, 15h26   #6
Membre du Club
 
Inscription : février 2007
Messages : 56
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 56
Points : 56
Points : 56
et en utilisant une table temporaire, quelque chose comme ça :

Code :
WITH temp AS (SELECT month(c2) AS Z1, c1 AS Z2 FROM t4 ) SELECT Z1, count (Z2) FROM temp GROUP BY Z1
??
clalevee est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2007, 16h11   #7
Nouveau Membre du Club
 
Inscription : juillet 2003
Messages : 46
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 46
Points : 28
Points : 28
j'ai essayer ca ne fonctionne pas :-(

mais pas grave je vais le programmer c'est pas si complexe :-)

et ta solution même si elle fonctionné, m'aurais posé pas mal de problème en terme de généricité.
car la mes requête sont construite de manière totalement générique (donc avec une structure de requête bien défini).
ultimax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2007, 10h17   #8
Membre habitué
 
Inscription : septembre 2004
Messages : 123
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 123
Points : 127
Points : 127
Bonjour,

tu peux essayer :

SELECT COUNT(C1), C2 FROM (
SELECT id AS C1, MONTH(DATE) AS C2
FROM table ) Z
GROUP BY C2

Alex.
alex. est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h47.


 
 
 
 
Partenaires

Hébergement Web