IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

requête sql avancée


Sujet :

WinDev

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 98
    Points : 61
    Points
    61
    Par défaut requête sql avancée
    bonjour,
    voilà mon soucis, j'ai un fichier comprenant des personnes, des dates et des heures.
    je voudrais calculer dans une requête la somme des heures par personnes et par mois.
    Dois-je passer par une table temporaire ou connaissez vous la syntaxe pour effectuer ce calcul ?

    select personne, decode( mois(date),1,sum(heures),0) as janvier ,
    decode (mois(date),2,sum(heures),0) as février ...
    from mon_fichier
    where année=2008
    group by personne

    merci pour votre aide
    Thierry

  2. #2
    Membre expérimenté Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Points : 1 381
    Points
    1 381
    Par défaut
    Drôle de question dans une rubrique dédiée à WinDev...

    A mon avis, tu sera obliger de faire un select par mois
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    select sum(heures) from mon_fichier where date between '01/01/2009' and '31/12/2009' group by personne

  3. #3
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Bonjour
    Une requête suffit pour ça
    Il faut regrouper par personne et par mois (MONTH(date)) et sommer les heures (SUM(heures))

    En considérant que "date" est de type DATE et pour la somme il y a peut être des transformations à faire en fontion du type du champ "heures"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT personne, MONTH(date) as Mois, SUM(heures)
    FROM mon_fichier
    GROUP BY personne, MONTH(date)
    En faisant un format de MONTH(date) tu obtiendras Janvier, Février, ....

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 98
    Points : 61
    Points
    61
    Par défaut
    la question est bien dans ce forum puisque Windev m'envoie un message d'insulte
    j'ai tenté :
    select personne,decode(right(left(date,6),2),1,sum(heures),0) as janvier,
    decode(right(left(date,6,2),2,sum(heures),0) as fevrier ....
    from mon_fichier
    where left(date,4)=2009
    group by personne

    mais il me dit que les fonctions sum,avg,min,max... doivent être dans un select ??

    par contre j'ai pas essayé la réponse de pascal, je tenterai ce soir

    select personne, left(date,6) as mois, sum(heures) from mon_fichier
    where left(date,4)=2009 group by personne,(left(date,6)

    merci en tout cas

  5. #5
    Membre expérimenté Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Points : 1 381
    Points
    1 381
    Par défaut
    Ah je savais pas qu'on pouvait grouper autrement que par des champs !
    C'est bon à savoir ^^

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 98
    Points : 61
    Points
    61
    Par défaut
    re,
    en fait je m'égare la proposition de pascal ne me va pas non plus puisque je n'aurais pas tous les mois dans le même enregistrement
    donc j'en suis a essayé de faire marcher ma première tentative (une fois mes enregs constitués je fais la somme par personne) ou passer par un fichier temporaire.

  7. #7
    Membre expérimenté Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Points : 1 381
    Points
    1 381
    Par défaut
    Euh, j'ai pas trop compris ton probleme...
    La réponse de hpascal devrait te retourner la somme des heures par personne et par mois. Tu veux que ca fasse quoi d'autre ?

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 98
    Points : 61
    Points
    61
    Par défaut
    en fait, sur un seul enreg j'aurais aimé avoir pour une personne, le nb d'heures sur tous les mois de l'année passée en paramètre.
    nom, nb_heures_janvier, nb_heures_fevrier, nb_heures_mars...
    alors que la requête de pascal donnerait
    nom1, janvier, nb_heures
    nom1, fevrier, nb_heures

    voilà

Discussions similaires

  1. SQL avancé - Requêtes hiérarchiques
    Par phoenix67 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 12/03/2010, 10h49
  2. Requête SQL avec tri avancé
    Par Lexarino dans le forum Débuter
    Réponses: 5
    Dernier message: 17/01/2009, 11h54
  3. requête sql avancée
    Par aurapp dans le forum Langage SQL
    Réponses: 3
    Dernier message: 18/04/2007, 18h18
  4. [RegEx] Requête SQL sur tables non connues à l'avance (regex)
    Par lothar59 dans le forum Langage
    Réponses: 2
    Dernier message: 27/02/2007, 10h33
  5. Requte Sql Avancée, question ... ? Estce possible ?
    Par plex dans le forum Administration
    Réponses: 8
    Dernier message: 14/12/2005, 15h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo